Невозможно создать подписку посредника контекста STH

Я использую основную ветку репозитория github sth-кометы (в настоящее время предварительный выпуск 2.0.0-next) и я могу установить и выполнить его. Проблема возникает, когда я хочу создать подписку в брокере контекста (v1.4.0). Обе службы установлены на одном и том же компьютере FIWARE Lab, и я получаю к ним удаленный доступ по общему IP-адресу.

Я пытался создать подписку, используя шаблон из вашей документации, но STH всегда жалуется на FIWARE-Service и FIWARE-ServicePath заголовки (кажется, что брокер контекста не отправляет их вместе с уведомлениями). Это команда для создания подписки:

curl http://$(server):1026/v1/subscribeContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'FIWARE-Service: default' -H 'FIWARE-ServicePath: /' -d @- <<EOF
{
    "entities": [
        {
            "type": "weather.station",
            "isPattern": "true",
            "id": ".*"
        }
    ],
    "attributes": [
        "temperature",
        "humidity"
    ],
    "reference": "http://$(server):8666/notify",
    "duration": "P1M",
    "notifyConditions": [
        {
            "type": "ONCHANGE",
            "condValues": [
                "temperature",
                "humidity"
            ]
        }
    ],
    "throttling": "PT5S"
}
EOF

Это сообщенная ошибка:

time=2016-10-06T15:56:30.124Z | lvl=WARN | corr=7220efae-8bdd-11e6-96a8-fa163ea89c59 | trans=11ef935c-f749-46b7-bcd4-942ffddedd27 | op=OPER_STH_POST | srv=default | subsrv=n/a | msg=POST /notify, event={"request":"1475769390111:robots:23181:ityixskh:10000","timestamp":1475769390123,"tags":["validation","error","headers"],"data":{"data":{"data":null,"isBoom":true,"isServer":false,"output":{"statusCode":400,"payload":{"statusCode":400,"error":"Bad Request","message":"child \"fiware-servicepath\" fails because [fiware-servicepath is required]"},"headers":{}}},"isBoom":true,"isServer":false,"output":{"statusCode":400,"payload":{"statusCode":400,"error":"Bad Request","message":"child \"fiware-servicepath\" fails because [fiware-servicepath is required]","validation":{"source":"headers","keys":[]}},"headers":{}}},"internal":true}

Если я использую v2 API посредника контекста, я могу заставить его отправить FIWARE-Service а также FIWARE-ServicePath заголовки:

curl http://$(server):1026/v2/subscriptions -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -H 'FIWARE-Service: default' -H 'FIWARE-ServicePath: /' -d @- <<EOF
{
    "description": "STH subscription",
    "subject": {
        "entities": [
            {
                "type": "weather.station",
                "idPattern": ".*"
            }
        ],
        "condition": {  
            "attrs":[  
                "temperature",
                "humidity"
            ]
        }
    },
    "notification": {
        "httpCustom": {
            "url": "http://$(server):8666/notify",
            "headers": {
                "FIWARE-Service": "default",
                "FIWARE-ServicePath": "/"
            }
        },
        "attrs": [
            "temperature",
            "humidity"
        ]
    },
    "expires": "2018-04-05T14:00:00.00Z",
    "throttling": 5
}
EOF

Таким образом, сервер STH не соответствует заголовкам, хотя и вызывает другие ошибки:

time=2016-10-06T15:46:57.564Z | lvl=ERROR | corr=19e59f02-8bdc-11e6-8534-fa163ea89c59 | trans=1b7fc29a-7f5c-449d-9238-d2e644154b05 | op=OPER_STH_POST | srv=default | subsrv=/ | msg=POST /notify, event={"request":"1475768812582:robots:8985:itycaq0o:10003","timestamp":1475768817564,"tags":["request","closed","error"],"internal":true}
time=2016-10-06T15:47:02.592Z | lvl=ERROR | corr=19e59f02-8bdc-11e6-8534-fa163ea89c59 | trans=7e5bf417-0b1d-4b53-b47b-838cead91b94 | op=OPER_STH_POST | srv=default | subsrv=/ | msg=POST /notify, event={"request":"1475768817606:robots:8985:itycaq0o:10004","timestamp":1475768822592,"tags":["request","closed","error"],"internal":true}

1 ответ

Решение

Прежде всего, большое спасибо за использование компонента STH;)

Кажется, что проблема связана с брокером контекста Orion, не включая Fiware-ServicePath заголовок в уведомлениях, отправляемых компоненту STH, если путь службы является пустым или путь по умолчанию (т. е. /). Я только что создал проблему для ее устранения в репозитории Orion Context Broker на тот случай, если вы также захотите ее отследить: https://github.com/telefonicaid/fiware-orion/issues/2584

Если вы используете любой другой допустимый путь обслуживания, все должно быть хорошо.

Большое спасибо еще раз!

Лучше всего, Герман.

Другие вопросы по тегам