iotagent-node-lib 2.15.1 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +17 -1
- package/.readthedocs.yml +7 -0
- package/CHANGES_NEXT_RELEASE +0 -1
- package/README.md +1 -0
- package/doc/Contribution.md +60 -1
- package/doc/advanced-topics.md +136 -14
- package/doc/api.md +38 -22
- package/doc/apiary/iotagent.apib +1 -3
- package/doc/architecture.md +2 -2
- package/doc/config-basic-example.js +0 -1
- package/doc/deprecated.md +2 -2
- package/doc/development.md +13 -6
- package/doc/expressionLanguage.md +519 -277
- package/doc/getting-started.md +0 -1
- package/doc/howto.md +13 -17
- package/doc/installationguide.md +67 -69
- package/doc/usermanual.md +48 -16
- package/docker/Mosquitto/Dockerfile +4 -9
- package/docker/Mosquitto/README.md +2 -0
- package/docker/Mosquitto/startMosquitto.sh +18 -1
- package/lib/command/commandLine.js +1 -1
- package/lib/commonConfig.js +5 -14
- package/lib/errors.js +0 -16
- package/lib/fiware-iotagent-lib.js +5 -0
- package/lib/jexlTranformsMap.js +71 -0
- package/lib/model/Command.js +1 -1
- package/lib/model/Device.js +5 -2
- package/lib/model/Group.js +20 -2
- package/lib/model/dbConn.js +7 -1
- package/lib/plugins/attributeAlias.js +6 -13
- package/lib/plugins/bidirectionalData.js +2 -27
- package/lib/plugins/expressionParser.js +41 -17
- package/lib/plugins/expressionPlugin.js +21 -27
- package/lib/plugins/jexlParser.js +71 -67
- package/lib/plugins/multiEntity.js +68 -147
- package/lib/plugins/pluginUtils.js +12 -48
- package/lib/plugins/timestampProcessPlugin.js +1 -46
- package/lib/request-shim.js +111 -0
- package/lib/services/common/domain.js +2 -2
- package/lib/services/common/genericMiddleware.js +6 -2
- package/lib/services/common/iotManagerService.js +1 -1
- package/lib/services/common/securityServiceKeystone.js +1 -1
- package/lib/services/common/securityServiceOAuth2.js +3 -2
- package/lib/services/devices/deviceRegistryMongoDB.js +29 -22
- package/lib/services/devices/deviceService.js +56 -33
- package/lib/services/devices/devices-NGSI-LD.js +42 -14
- package/lib/services/devices/devices-NGSI-mixed.js +3 -3
- package/lib/services/devices/devices-NGSI-v2.js +48 -24
- package/lib/services/devices/registrationUtils.js +1 -134
- package/lib/services/groups/groupRegistryMemory.js +2 -0
- package/lib/services/groups/groupRegistryMongoDB.js +58 -76
- package/lib/services/groups/groupService.js +1 -1
- package/lib/services/ngsi/entities-NGSI-LD.js +205 -124
- package/lib/services/ngsi/entities-NGSI-v2.js +142 -32
- package/lib/services/ngsi/ngsiService.js +4 -6
- package/lib/services/ngsi/ngsiUtils.js +0 -21
- package/lib/services/ngsi/subscription-NGSI-LD.js +14 -5
- package/lib/services/ngsi/subscriptionService.js +1 -4
- package/lib/services/northBound/contextServer-NGSI-LD.js +7 -2
- package/lib/services/northBound/contextServer-NGSI-v2.js +25 -13
- package/lib/services/northBound/contextServer.js +1 -4
- package/lib/services/northBound/contextServerUtils.js +0 -81
- package/lib/services/northBound/deviceProvisioningServer.js +36 -9
- package/lib/services/northBound/northboundServer.js +2 -0
- package/lib/services/northBound/restUtils.js +2 -39
- package/lib/templates/updateDevice.json +4 -0
- package/lib/templates/updateDeviceLax.json +4 -0
- package/package.json +13 -13
- package/test/tools/utils.js +2 -0
- package/test/unit/examples/deviceProvisioningRequests/provisionAnotherDevice.json +1 -1
- package/test/unit/examples/deviceProvisioningRequests/provisionDeviceMissingParameters.json +1 -1
- package/test/unit/examples/deviceProvisioningRequests/provisionDuplicatedDev.json +1 -1
- package/test/unit/examples/deviceProvisioningRequests/provisionFullDevice.json +1 -1
- package/test/unit/examples/deviceProvisioningRequests/provisionNewDeviceMalformed1.json +1 -1
- package/test/unit/examples/groupProvisioningRequests/multipleGroupsCreation.json +1 -1
- package/test/unit/examples/iotamRequests/registrationEmpty.json +1 -1
- package/test/unit/examples/iotamRequests/registrationWithGroups.json +2 -2
- package/test/unit/examples/iotamRequests/registrationWithGroupsWithoutCB.json +2 -2
- package/test/unit/examples/iotamRequests/registrationWithStaticGroups.json +2 -2
- package/test/unit/expressions/jexlExpression-test.js +119 -0
- package/test/unit/general/config-multi-core-test.js +1 -1
- package/test/unit/general/contextBrokerKeystoneSecurityAccess-test.js +30 -77
- package/test/unit/general/deviceService-test.js +19 -35
- package/test/unit/general/loglevel-api_test.js +8 -13
- package/test/unit/general/migration-test.js +1 -0
- package/test/unit/general/startup-test.js +3 -2
- package/test/unit/general/statistics-persistence_test.js +2 -2
- package/test/unit/general/statistics-service_test.js +2 -2
- package/test/unit/lazyAndCommands/commandRegistry_test.js +18 -18
- package/test/unit/memoryRegistry/deviceRegistryMemory_test.js +16 -24
- package/test/unit/mongodb/mongodb-connectionoptions-test.js +2 -2
- package/test/unit/mongodb/mongodb-group-registry-test.js +11 -11
- package/test/unit/mongodb/mongodb-registry-test.js +55 -131
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerIoTAgent1.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerIoTAgent2.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerIoTAgent4.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerIoTAgentCommands.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerProvisionedDevice.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerProvisionedDevice2.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup2.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup3.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/updateCommands1.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/updateIoTAgent1.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/updateIoTAgent2.json +1 -1
- package/test/unit/ngsi-ld/examples/contextAvailabilityRequests/updateIoTAgent3.json +1 -1
- package/test/unit/ngsi-ld/examples/contextRequests/createMinimumProvisionedDevice.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/createProvisionedDevice.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/createProvisionedDeviceMultientity.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/createProvisionedDeviceWithGroupAndStatic.json +0 -14
- package/test/unit/ngsi-ld/examples/contextRequests/createProvisionedDeviceWithGroupAndStatic2.json +0 -14
- package/test/unit/ngsi-ld/examples/contextRequests/createProvisionedDeviceWithGroupAndStatic3.json +1 -15
- package/test/unit/ngsi-ld/examples/contextRequests/createTimeInstantMinimumDevice.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextAliasPlugin6.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextAutocast5.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin12a.json +7 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin13.json +13 -13
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin16.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin17.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin1a.json +18 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin29.json +18 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin31.json +15 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin32.json +17 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin33.json +18 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin34.json +17 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin4a.json +36 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin5.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin7.json +16 -16
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin8a.json +18 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextGeoproperties3.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextMultientityPlugin15.json +25 -0
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextMultientityTimestampPlugin1.json +6 -6
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextMultientityTimestampPlugin2.json +3 -3
- package/test/unit/ngsi-ld/examples/contextRequests/updateProvisionActiveAttributes1.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateProvisionCommands1.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateProvisionDeviceStatic.json +0 -7
- package/test/unit/ngsi-ld/examples/contextRequests/updateProvisionMinimumDevice.json +0 -7
- package/test/unit/ngsi-ld/examples/subscriptionRequests/bidirectionalSubscriptionRequest.json +20 -17
- package/test/unit/ngsi-ld/examples/subscriptionRequests/simpleSubscriptionRequest.json +18 -15
- package/test/unit/ngsi-ld/examples/subscriptionRequests/simpleSubscriptionRequest2.json +18 -15
- package/test/unit/ngsi-ld/expressions/expressionBasedTransformations-test.js +21 -21
- package/test/unit/ngsi-ld/expressions/jexlBasedTransformations-test.js +1018 -0
- package/test/unit/ngsi-ld/general/config-jsonld-contexts-test.js +2 -2
- package/test/unit/ngsi-ld/general/contextBrokerOAuthSecurityAccess-test.js +24 -24
- package/test/unit/ngsi-ld/general/deviceService-test.js +7 -7
- package/test/unit/ngsi-ld/general/https-support-test.js +14 -13
- package/test/unit/ngsi-ld/general/iotam-autoregistration-test.js +8 -7
- package/test/unit/ngsi-ld/general/startup-test.js +2 -1
- package/test/unit/ngsi-ld/lazyAndCommands/active-devices-attribute-update-test.js +10 -8
- package/test/unit/ngsi-ld/lazyAndCommands/command-test.js +11 -12
- package/test/unit/ngsi-ld/lazyAndCommands/lazy-devices-test.js +25 -29
- package/test/unit/ngsi-ld/lazyAndCommands/polling-commands-test.js +16 -15
- package/test/unit/ngsi-ld/ngsiService/active-devices-test.js +18 -17
- package/test/unit/ngsi-ld/ngsiService/autocast-test.js +13 -12
- package/test/unit/ngsi-ld/ngsiService/geoproperties-test.js +10 -9
- package/test/unit/ngsi-ld/ngsiService/staticAttributes-test.js +3 -3
- package/test/unit/ngsi-ld/ngsiService/subscriptions-test.js +25 -24
- package/test/unit/ngsi-ld/plugins/alias-plugin_test.js +13 -12
- package/test/unit/ngsi-ld/plugins/bidirectional-plugin_test.js +27 -26
- package/test/unit/ngsi-ld/plugins/compress-timestamp-plugin_test.js +5 -5
- package/test/unit/ngsi-ld/plugins/event-plugin_test.js +3 -3
- package/test/unit/ngsi-ld/plugins/multientity-plugin_test.js +75 -14
- package/test/unit/ngsi-ld/plugins/timestamp-processing-plugin_test.js +3 -3
- package/test/unit/ngsi-ld/provisioning/device-provisioning-api_test.js +54 -53
- package/test/unit/ngsi-ld/provisioning/device-registration_test.js +20 -19
- package/test/unit/ngsi-ld/provisioning/device-update-registration_test.js +23 -22
- package/test/unit/ngsi-ld/provisioning/listProvisionedDevices-test.js +58 -70
- package/test/unit/ngsi-ld/provisioning/provisionDeviceMultientity-test.js +8 -7
- package/test/unit/ngsi-ld/provisioning/removeProvisionedDevice-test.js +19 -19
- package/test/unit/ngsi-ld/provisioning/singleConfigurationMode-test.js +18 -20
- package/test/unit/ngsi-ld/provisioning/updateProvisionedDevices-test.js +43 -49
- package/test/unit/ngsi-mixed/provisioning/ngsi-versioning-test.js +16 -14
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgent1.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgent2.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgent3.json +19 -0
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgent4.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgent5.json +19 -0
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerIoTAgentCommands.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerProvisionedDevice.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerProvisionedDevice2.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup2.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup3.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/updateCommands1.json +3 -3
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/updateIoTAgent1.json +3 -3
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/updateIoTAgent2.json +1 -1
- package/test/unit/ngsiv2/examples/contextAvailabilityRequests/updateIoTAgent3.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin1.json +17 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin11.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin12.json +2 -2
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin15.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin16.json +14 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin17.json +14 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin18.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin19.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin2.json +13 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin20.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin21.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin22.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin23.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin24.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin25.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin26.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin27.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin28.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin29.json +22 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin3.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin30.json +6 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin31.json +18 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin32.json +16 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin33.json +22 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin34.json +12 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin4.json +12 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin5.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin6.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin7.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin8.json +17 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextExpressionPlugin9.json +5 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMiddleware1.json +10 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMiddleware2.json +10 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin1.json +2 -2
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin10.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin11.json +13 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin12.json +33 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin13.json +33 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin14.json +33 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin15.json +25 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin16.json +25 -0
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin2.json +2 -2
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin3.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin4.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin5.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin6.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin7.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin8.json +2 -2
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityPlugin9.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityTimestampPlugin1.json +8 -8
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityTimestampPlugin2.json +4 -4
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityTimestampPlugin3.json +1 -1
- package/test/unit/ngsiv2/examples/contextRequests/updateContextMultientityTimestampPlugin4.json +2 -2
- package/test/unit/ngsiv2/examples/contextRequests/updateProvisionDevice.json +20 -0
- package/test/unit/ngsiv2/examples/subscriptionRequests/bidirectionalSubscriptionRequest.json +1 -1
- package/test/unit/ngsiv2/examples/subscriptionRequests/simpleSubscriptionRequest.json +1 -1
- package/test/unit/ngsiv2/examples/subscriptionRequests/simpleSubscriptionRequest2.json +1 -1
- package/test/unit/ngsiv2/expressions/expressionBasedTransformations-test.js +93 -60
- package/test/unit/ngsiv2/expressions/expressionCombinedTransformations-test.js +16 -16
- package/test/unit/ngsiv2/expressions/jexlBasedTransformations-test.js +548 -164
- package/test/unit/ngsiv2/general/contextBrokerOAuthSecurityAccess-test.js +34 -33
- package/test/unit/ngsiv2/general/deviceService-test.js +15 -14
- package/test/unit/ngsiv2/general/https-support-test.js +14 -13
- package/test/unit/ngsiv2/general/iotam-autoregistration-test.js +8 -7
- package/test/unit/ngsiv2/general/startup-test.js +2 -1
- package/test/unit/ngsiv2/lazyAndCommands/active-devices-attribute-update-test.js +9 -7
- package/test/unit/ngsiv2/lazyAndCommands/command-test.js +13 -12
- package/test/unit/ngsiv2/lazyAndCommands/lazy-devices-test.js +323 -51
- package/test/unit/ngsiv2/lazyAndCommands/polling-commands-test.js +22 -20
- package/test/unit/ngsiv2/ngsiService/active-devices-test.js +114 -26
- package/test/unit/ngsiv2/ngsiService/autocast-test.js +16 -16
- package/test/unit/ngsiv2/ngsiService/geoproperties-test.js +39 -38
- package/test/unit/{ngsiService → ngsiv2/ngsiService}/queryDeviceInformationInCb-test.js +25 -54
- package/test/unit/ngsiv2/ngsiService/staticAttributes-test.js +5 -5
- package/test/unit/ngsiv2/ngsiService/subscriptions-test.js +25 -24
- package/test/unit/ngsiv2/plugins/alias-plugin_test.js +22 -22
- package/test/unit/ngsiv2/plugins/bidirectional-plugin_test.js +27 -26
- package/test/unit/ngsiv2/plugins/compress-timestamp-plugin_test.js +7 -7
- package/test/unit/ngsiv2/plugins/event-plugin_test.js +4 -4
- package/test/unit/ngsiv2/plugins/multientity-plugin_test.js +549 -24
- package/test/unit/ngsiv2/plugins/timestamp-processing-plugin_test.js +4 -4
- package/test/unit/{plugins → ngsiv2/plugins}/translation-inPlugins_test.js +25 -25
- package/test/unit/{provisioning → ngsiv2/provisioning}/device-group-api-test.js +44 -75
- package/test/unit/{provisioning/device-group-utils_test.js → ngsiv2/provisioning/device-group-utils-test.js} +15 -14
- package/test/unit/ngsiv2/provisioning/device-provisioning-api_test.js +74 -73
- package/test/unit/ngsiv2/provisioning/device-registration_test.js +20 -19
- package/test/unit/ngsiv2/provisioning/device-update-registration_test.js +30 -29
- package/test/unit/ngsiv2/provisioning/listProvisionedDevices-test.js +58 -69
- package/test/unit/ngsiv2/provisioning/provisionDeviceMultientity-test.js +8 -7
- package/test/unit/ngsiv2/provisioning/removeProvisionedDevice-test.js +19 -19
- package/test/unit/ngsiv2/provisioning/singleConfigurationMode-test.js +18 -19
- package/test/unit/ngsiv2/provisioning/updateProvisionedDevices-test.js +49 -52
- package/test/unit/plugins/capture-configuration-inPlugins_test.js +6 -4
- package/test/unit/plugins/capture-provision-inPlugins_test.js +13 -23
- package/.nyc_output/016aca19-69bf-4681-9b41-2835c5131681.json +0 -1
- package/.nyc_output/processinfo/016aca19-69bf-4681-9b41-2835c5131681.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/lib/services/devices/devices-NGSI-v1.js +0 -293
- package/lib/services/devices/registrationUtils.js_avega +0 -589
- package/lib/services/ngsi/entities-NGSI-v1.js +0 -300
- package/lib/services/ngsi/subscription-NGSI-v1.js +0 -234
- package/lib/services/northBound/contextServer-NGSI-v1.js +0 -526
- package/lib/templates/notificationTemplateNgsi1.json +0 -75
- package/lib/templates/updateContextNgsi1.json +0 -50
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgent1.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgent2.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgent3.json +0 -25
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgent4.json +0 -22
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgentAttributeUpdates.json +0 -16
- package/test/unit/examples/contextAvailabilityRequests/registerIoTAgentCommands.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerNewDevice1.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerNewDevice2.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerProvisionedDevice.json +0 -25
- package/test/unit/examples/contextAvailabilityRequests/registerProvisionedDevice2.json +0 -21
- package/test/unit/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup.json +0 -33
- package/test/unit/examples/contextAvailabilityRequests/registerProvisionedDeviceWithGroup2.json +0 -33
- package/test/unit/examples/contextAvailabilityRequests/unregisterDevice1.json +0 -22
- package/test/unit/examples/contextAvailabilityRequests/unregisterDevice3.json +0 -26
- package/test/unit/examples/contextAvailabilityRequests/unregisterProvisionedDevice.json +0 -26
- package/test/unit/examples/contextAvailabilityRequests/updateCommands1.json +0 -22
- package/test/unit/examples/contextAvailabilityRequests/updateIoTAgent1.json +0 -22
- package/test/unit/examples/contextAvailabilityRequests/updateIoTAgent2.json +0 -26
- package/test/unit/examples/contextAvailabilityRequests/updateIoTAgent3.json +0 -22
- package/test/unit/examples/contextAvailabilityResponses/registerIoTAgent1Failed.json +0 -8
- package/test/unit/examples/contextAvailabilityResponses/registerIoTAgent1Success.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/registerNewDevice1Success.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/registerNewDevice2Success.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/registerProvisionedDeviceSuccess.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/unregisterDevice1Failed.json +0 -8
- package/test/unit/examples/contextAvailabilityResponses/unregisterDevice1Success.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/updateCommands1Success.json +0 -4
- package/test/unit/examples/contextAvailabilityResponses/updateIoTAgent1Success.json +0 -6
- package/test/unit/examples/contextProviderResponses/queryInformationResponse.json +0 -22
- package/test/unit/examples/contextProviderResponses/queryInformationResponseEmptyAttributes.json +0 -22
- package/test/unit/examples/contextProviderResponses/queryInformationStaticAttributesResponse.json +0 -27
- package/test/unit/examples/contextProviderResponses/updateInformationResponse.json +0 -22
- package/test/unit/examples/contextProviderResponses/updateInformationResponse2.json +0 -22
- package/test/unit/examples/contextRequests/contextSubscriptionRequest.json +0 -20
- package/test/unit/examples/contextRequests/contextSubscriptionRequest2.json +0 -20
- package/test/unit/examples/contextRequests/createBidirectionalDevice.json +0 -17
- package/test/unit/examples/contextRequests/createDatetimeProvisionedDevice.json +0 -17
- package/test/unit/examples/contextRequests/createGeopointProvisionedDevice.json +0 -17
- package/test/unit/examples/contextRequests/createMinimumProvisionedDevice.json +0 -17
- package/test/unit/examples/contextRequests/createProvisionedDevice.json +0 -32
- package/test/unit/examples/contextRequests/createProvisionedDeviceMultientity.json +0 -32
- package/test/unit/examples/contextRequests/createProvisionedDeviceWithGroup.json +0 -47
- package/test/unit/examples/contextRequests/createProvisionedDeviceWithGroupAndStatic.json +0 -52
- package/test/unit/examples/contextRequests/createProvisionedDeviceWithGroupAndStatic2.json +0 -52
- package/test/unit/examples/contextRequests/createTimeinstantDevice.json +0 -17
- package/test/unit/examples/contextRequests/queryContext1.json +0 -13
- package/test/unit/examples/contextRequests/queryContext2.json +0 -13
- package/test/unit/examples/contextRequests/queryContextAliasPlugin1.json +0 -10
- package/test/unit/examples/contextRequests/queryContextCompressTimestamp1.json +0 -13
- package/test/unit/examples/contextRequests/updateActiveAttributes.json +0 -11
- package/test/unit/examples/contextRequests/updateContext1.json +0 -22
- package/test/unit/examples/contextRequests/updateContext2.json +0 -22
- package/test/unit/examples/contextRequests/updateContext3.json +0 -17
- package/test/unit/examples/contextRequests/updateContext3WithStatic.json +0 -22
- package/test/unit/examples/contextRequests/updateContext4.json +0 -22
- package/test/unit/examples/contextRequests/updateContext5.json +0 -19
- package/test/unit/examples/contextRequests/updateContextAliasPlugin.json +0 -22
- package/test/unit/examples/contextRequests/updateContextAliasPlugin2.json +0 -17
- package/test/unit/examples/contextRequests/updateContextAppendMode.json +0 -22
- package/test/unit/examples/contextRequests/updateContextCommandError.json +0 -22
- package/test/unit/examples/contextRequests/updateContextCommandExpired.json +0 -22
- package/test/unit/examples/contextRequests/updateContextCommandFinish.json +0 -22
- package/test/unit/examples/contextRequests/updateContextCommandStatus.json +0 -17
- package/test/unit/examples/contextRequests/updateContextCompressTimestamp1.json +0 -22
- package/test/unit/examples/contextRequests/updateContextCompressTimestamp2.json +0 -29
- package/test/unit/examples/contextRequests/updateContextExpressionPlugin1.json +0 -17
- package/test/unit/examples/contextRequests/updateContextExpressionPlugin2.json +0 -27
- package/test/unit/examples/contextRequests/updateContextExpressionPlugin3.json +0 -17
- package/test/unit/examples/contextRequests/updateContextExpressionPlugin4.json +0 -17
- package/test/unit/examples/contextRequests/updateContextExpressionPlugin5.json +0 -27
- package/test/unit/examples/contextRequests/updateContextMiddleware1.json +0 -22
- package/test/unit/examples/contextRequests/updateContextMultiEntityPlugin3.json +0 -35
- package/test/unit/examples/contextRequests/updateContextMultientityPlugin1.json +0 -30
- package/test/unit/examples/contextRequests/updateContextMultientityPlugin2.json +0 -30
- package/test/unit/examples/contextRequests/updateContextProcessTimestamp1.json +0 -29
- package/test/unit/examples/contextRequests/updateContextStaticAttributes.json +0 -22
- package/test/unit/examples/contextRequests/updateContextTimestamp.json +0 -41
- package/test/unit/examples/contextRequests/updateContextTimestampOverride.json +0 -22
- package/test/unit/examples/contextRequests/updateContextTimestampOverrideWithoutMilis.json +0 -22
- package/test/unit/examples/contextRequests/updateContextTimestampTimezone.json +0 -41
- package/test/unit/examples/contextRequests/updateProvisionActiveAttributes1.json +0 -17
- package/test/unit/examples/contextRequests/updateProvisionCommands1.json +0 -27
- package/test/unit/examples/contextRequests/updateProvisionDeviceStatic.json +0 -38
- package/test/unit/examples/contextRequests/updateProvisionMinimumDevice.json +0 -17
- package/test/unit/examples/contextResponses/contextSubscriptionRequest2Success.json +0 -7
- package/test/unit/examples/contextResponses/contextSubscriptionRequestSuccess.json +0 -7
- package/test/unit/examples/contextResponses/createBidirectionalDeviceSuccess.json +0 -22
- package/test/unit/examples/contextResponses/createDatetimeProvisionedDeviceSuccess.json +0 -22
- package/test/unit/examples/contextResponses/createGeopointProvisionedDeviceSuccess.json +0 -22
- package/test/unit/examples/contextResponses/createProvisionedDeviceSuccess.json +0 -22
- package/test/unit/examples/contextResponses/createTimeinstantSuccess.json +0 -22
- package/test/unit/examples/contextResponses/queryContext1Success.json +0 -27
- package/test/unit/examples/contextResponses/queryContext2Error.json +0 -7
- package/test/unit/examples/contextResponses/queryContext2UnknownError.json +0 -6
- package/test/unit/examples/contextResponses/queryContext3Error.json +0 -34
- package/test/unit/examples/contextResponses/queryContextAliasPlugin1Success.json +0 -27
- package/test/unit/examples/contextResponses/queryContextCompressTimestamp1Success.json +0 -27
- package/test/unit/examples/contextResponses/updateActiveAttributesSuccess.json +0 -16
- package/test/unit/examples/contextResponses/updateContext1Failed.json +0 -7
- package/test/unit/examples/contextResponses/updateContext1Success.json +0 -27
- package/test/unit/examples/contextResponses/updateContext2Failed.json +0 -35
- package/test/unit/examples/contextResponses/updateContextAliasPlugin2Success.json +0 -27
- package/test/unit/examples/contextResponses/updateContextAliasPluginSuccess.json +0 -27
- package/test/unit/examples/contextResponses/updateContextCommandFinishSuccess.json +0 -27
- package/test/unit/examples/contextResponses/updateContextCommandStatusSuccess.json +0 -22
- package/test/unit/examples/contextResponses/updateContextCompressTimestamp1Success.json +0 -27
- package/test/unit/examples/contextResponses/updateContextCompressTimestamp2Success.json +0 -34
- package/test/unit/examples/contextResponses/updateContextEvents1Success.json +0 -27
- package/test/unit/examples/contextResponses/updateContextExpressionPlugin1Success.json +0 -22
- package/test/unit/examples/contextResponses/updateContextExpressionPlugin2Success.json +0 -22
- package/test/unit/examples/contextResponses/updateContextExpressionPlugin3Success.json +0 -22
- package/test/unit/examples/contextResponses/updateContextExpressionPlugin5Success.json +0 -32
- package/test/unit/examples/contextResponses/updateContextMultientityPlugin1Success.json +0 -40
- package/test/unit/examples/contextResponses/updateContextMultientityPlugin2Success.json +0 -40
- package/test/unit/examples/contextResponses/updateContextMultientityPlugin3Success.json +0 -40
- package/test/unit/examples/contextResponses/updateContextProcessTimestamp1Success.json +0 -27
- package/test/unit/examples/contextResponses/updateProvisionActiveAttributes1Success.json +0 -22
- package/test/unit/examples/contextResponses/updateProvisionCommands1Success.json +0 -32
- package/test/unit/examples/contextResponses/updateProvisionMinimumDeviceSuccess.json +0 -22
- package/test/unit/examples/subscriptionRequests/bidirectionalNotification.json +0 -24
- package/test/unit/examples/subscriptionRequests/bidirectionalSubscriptionRemove.json +0 -3
- package/test/unit/examples/subscriptionRequests/bidirectionalSubscriptionRequest.json +0 -22
- package/test/unit/examples/subscriptionRequests/errorNotification.json +0 -24
- package/test/unit/examples/subscriptionRequests/simpleNotification.json +0 -24
- package/test/unit/examples/subscriptionRequests/simpleSubscriptionRemove.json +0 -3
- package/test/unit/examples/subscriptionRequests/simpleSubscriptionRequest.json +0 -19
- package/test/unit/examples/subscriptionRequests/simpleSubscriptionRequest1.json +0 -19
- package/test/unit/examples/subscriptionResponses/bidirectionalSubscriptionSuccess.json +0 -6
- package/test/unit/examples/subscriptionResponses/simpleSubscriptionSuccess.json +0 -6
- package/test/unit/expressions/expressionBasedTransformations-test.js +0 -328
- package/test/unit/expressions/expressionCombinedTransformations-test.js +0 -306
- package/test/unit/expressions/jexlBasedTransformations-test.js +0 -334
- package/test/unit/general/contextBrokerOAuthSecurityAccess-test.js +0 -902
- package/test/unit/general/https-support-test.js +0 -286
- package/test/unit/general/iotam-autoregistration-test.js +0 -368
- package/test/unit/lazyAndCommands/active-devices-attribute-update-test.js +0 -168
- package/test/unit/lazyAndCommands/command-test.js +0 -341
- package/test/unit/lazyAndCommands/lazy-devices-test.js +0 -878
- package/test/unit/lazyAndCommands/polling-commands-test.js +0 -421
- package/test/unit/ngsi-ld/examples/contextRequests/updateContextExpressionPlugin20.json +0 -25
- package/test/unit/ngsiService/active-devices-test.js +0 -692
- package/test/unit/ngsiService/staticAttributes-test.js +0 -148
- package/test/unit/ngsiService/subscriptions-test.js +0 -345
- package/test/unit/plugins/alias-plugin_test.js +0 -158
- package/test/unit/plugins/bidirectional-plugin_test.js +0 -564
- package/test/unit/plugins/compress-timestamp-plugin_test.js +0 -257
- package/test/unit/plugins/event-plugin_test.js +0 -119
- package/test/unit/plugins/multientity-plugin_test.js +0 -248
- package/test/unit/plugins/timestamp-processing-plugin_test.js +0 -119
- package/test/unit/provisioning/device-provisioning-api_test.js +0 -748
- package/test/unit/provisioning/device-registration_test.js +0 -432
- package/test/unit/provisioning/device-update-registration_test.js +0 -326
- package/test/unit/provisioning/listProvisionedDevices-test.js +0 -488
- package/test/unit/provisioning/provisionDeviceMultientity-test.js +0 -123
- package/test/unit/provisioning/removeProvisionedDevice-test.js +0 -244
- package/test/unit/provisioning/singleConfigurationMode-test.js +0 -346
- package/test/unit/provisioning/updateProvisionedDevices-test.js +0 -436
|
@@ -54,7 +54,6 @@ const attributeList = [
|
|
|
54
54
|
'transport',
|
|
55
55
|
'polling',
|
|
56
56
|
'timestamp',
|
|
57
|
-
'autoprovision',
|
|
58
57
|
'explicitAttrs',
|
|
59
58
|
'expressionLanguage',
|
|
60
59
|
'ngsiVersion'
|
|
@@ -188,26 +187,11 @@ function listDevices(type, service, subservice, limit, offset, callback) {
|
|
|
188
187
|
});
|
|
189
188
|
}
|
|
190
189
|
|
|
191
|
-
|
|
192
|
-
* Internal function used to find a device in the DB.
|
|
193
|
-
*
|
|
194
|
-
* @param {String} id ID of the Device to find.
|
|
195
|
-
* @param {String} service Service the device belongs to (optional).
|
|
196
|
-
* @param {String} subservice Division inside the service (optional).
|
|
197
|
-
*/
|
|
198
|
-
function getDeviceById(id, service, subservice, callback) {
|
|
199
|
-
const queryParams = {
|
|
200
|
-
id,
|
|
201
|
-
service,
|
|
202
|
-
subservice
|
|
203
|
-
};
|
|
204
|
-
context = fillService(context, queryParams);
|
|
205
|
-
logger.debug(context, 'Looking for device with id [%s].', id);
|
|
206
|
-
|
|
190
|
+
function findOneInMongoDB(queryParams, id, callback) {
|
|
207
191
|
const query = Device.model.findOne(queryParams);
|
|
208
192
|
query.select({ __v: 0 });
|
|
209
193
|
|
|
210
|
-
query.exec(function handleGet(error, data) {
|
|
194
|
+
query.lean().exec(function handleGet(error, data) {
|
|
211
195
|
if (error) {
|
|
212
196
|
logger.debug(context, 'Internal MongoDB Error getting device: %s', error);
|
|
213
197
|
|
|
@@ -224,6 +208,24 @@ function getDeviceById(id, service, subservice, callback) {
|
|
|
224
208
|
});
|
|
225
209
|
}
|
|
226
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Internal function used to find a device in the DB.
|
|
213
|
+
*
|
|
214
|
+
* @param {String} id ID of the Device to find.
|
|
215
|
+
* @param {String} service Service the device belongs to (optional).
|
|
216
|
+
* @param {String} subservice Division inside the service (optional).
|
|
217
|
+
*/
|
|
218
|
+
function getDeviceById(id, service, subservice, callback) {
|
|
219
|
+
const queryParams = {
|
|
220
|
+
id,
|
|
221
|
+
service,
|
|
222
|
+
subservice
|
|
223
|
+
};
|
|
224
|
+
context = fillService(context, queryParams);
|
|
225
|
+
logger.debug(context, 'Looking for device with id [%s].', id);
|
|
226
|
+
findOneInMongoDB(queryParams, id, callback);
|
|
227
|
+
}
|
|
228
|
+
|
|
227
229
|
/**
|
|
228
230
|
* Retrieves a device using it ID, converting it to a plain Object before calling the callback.
|
|
229
231
|
*
|
|
@@ -236,7 +238,7 @@ function getDevice(id, service, subservice, callback) {
|
|
|
236
238
|
if (error) {
|
|
237
239
|
callback(error);
|
|
238
240
|
} else {
|
|
239
|
-
callback(null, data
|
|
241
|
+
callback(null, data);
|
|
240
242
|
}
|
|
241
243
|
});
|
|
242
244
|
}
|
|
@@ -253,13 +255,13 @@ function getByName(name, service, servicepath, callback) {
|
|
|
253
255
|
|
|
254
256
|
query.select({ __v: 0 });
|
|
255
257
|
|
|
256
|
-
query.exec(function handleGet(error, data) {
|
|
258
|
+
query.lean().exec(function handleGet(error, data) {
|
|
257
259
|
if (error) {
|
|
258
260
|
logger.debug(context, 'Internal MongoDB Error getting device: %s', error);
|
|
259
261
|
|
|
260
262
|
callback(new errors.InternalDbError(error));
|
|
261
263
|
} else if (data) {
|
|
262
|
-
callback(null, data
|
|
264
|
+
callback(null, data);
|
|
263
265
|
} else {
|
|
264
266
|
logger.debug(context, 'Device [%s] not found.', name);
|
|
265
267
|
|
|
@@ -284,8 +286,10 @@ function update(device, callback) {
|
|
|
284
286
|
data.active = device.active;
|
|
285
287
|
data.internalId = device.internalId;
|
|
286
288
|
data.staticAttributes = device.staticAttributes;
|
|
289
|
+
data.internalAttributes = device.internalAttributes;
|
|
287
290
|
data.commands = device.commands;
|
|
288
291
|
data.endpoint = device.endpoint;
|
|
292
|
+
data.polling = device.polling;
|
|
289
293
|
data.name = device.name;
|
|
290
294
|
data.type = device.type;
|
|
291
295
|
data.apikey = device.apikey;
|
|
@@ -293,7 +297,10 @@ function update(device, callback) {
|
|
|
293
297
|
data.explicitAttrs = device.explicitAttrs;
|
|
294
298
|
data.ngsiVersion = device.ngsiVersion;
|
|
295
299
|
|
|
296
|
-
|
|
300
|
+
/* eslint-disable-next-line new-cap */
|
|
301
|
+
const deviceObj = new Device.model(data);
|
|
302
|
+
deviceObj.isNew = false;
|
|
303
|
+
deviceObj.save(saveDeviceHandler(callback));
|
|
297
304
|
}
|
|
298
305
|
});
|
|
299
306
|
}
|
|
@@ -54,14 +54,11 @@ function init() {
|
|
|
54
54
|
case 'ld':
|
|
55
55
|
deviceHandler = require('./devices-NGSI-LD');
|
|
56
56
|
break;
|
|
57
|
-
case 'v2':
|
|
58
|
-
deviceHandler = require('./devices-NGSI-v2');
|
|
59
|
-
break;
|
|
60
57
|
case 'mixed':
|
|
61
58
|
deviceHandler = require('./devices-NGSI-mixed');
|
|
62
59
|
break;
|
|
63
60
|
default:
|
|
64
|
-
deviceHandler = require('./devices-NGSI-
|
|
61
|
+
deviceHandler = require('./devices-NGSI-v2');
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
|
|
@@ -172,6 +169,12 @@ function mergeDeviceWithConfiguration(fields, defaults, deviceData, configuratio
|
|
|
172
169
|
if (configuration && configuration.ngsiVersion) {
|
|
173
170
|
deviceData.ngsiVersion = configuration.ngsiVersion;
|
|
174
171
|
}
|
|
172
|
+
if (configuration && configuration.expressionLanguage && deviceData.expressionLanguage === undefined) {
|
|
173
|
+
deviceData.expressionLanguage = configuration.expressionLanguage;
|
|
174
|
+
}
|
|
175
|
+
if (configuration && configuration.explicitAttrs !== undefined && deviceData.explicitAttrs === undefined) {
|
|
176
|
+
deviceData.explicitAttrs = configuration.explicitAttrs;
|
|
177
|
+
}
|
|
175
178
|
|
|
176
179
|
logger.debug(context, 'deviceData after merge with conf: %j', deviceData);
|
|
177
180
|
callback(null, deviceData);
|
|
@@ -184,6 +187,16 @@ function mergeDeviceWithConfiguration(fields, defaults, deviceData, configuratio
|
|
|
184
187
|
* @param {Object} deviceObj Device data.
|
|
185
188
|
*/
|
|
186
189
|
function findConfigurationGroup(deviceObj, callback) {
|
|
190
|
+
function handlerGroupFindByType(error, group) {
|
|
191
|
+
if (!group) {
|
|
192
|
+
config
|
|
193
|
+
.getGroupRegistry()
|
|
194
|
+
.findSilently(deviceObj.service, deviceObj.subservice, deviceObj.apikey, handlerGroupFind);
|
|
195
|
+
} else {
|
|
196
|
+
handlerGroupFind(error, group);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
187
200
|
function handlerGroupFind(error, group) {
|
|
188
201
|
let effectiveGroup = group;
|
|
189
202
|
|
|
@@ -201,13 +214,7 @@ function findConfigurationGroup(deviceObj, callback) {
|
|
|
201
214
|
} else {
|
|
202
215
|
config
|
|
203
216
|
.getGroupRegistry()
|
|
204
|
-
.findTypeSilently(
|
|
205
|
-
deviceObj.service,
|
|
206
|
-
deviceObj.subservice,
|
|
207
|
-
deviceObj.type,
|
|
208
|
-
deviceObj.apikey,
|
|
209
|
-
handlerGroupFind
|
|
210
|
-
);
|
|
217
|
+
.findTypeSilently(deviceObj.service, deviceObj.subservice, deviceObj.type, deviceObj.apikey, handlerGroupFindByType);
|
|
211
218
|
}
|
|
212
219
|
}
|
|
213
220
|
|
|
@@ -225,14 +232,19 @@ function findConfigurationGroup(deviceObj, callback) {
|
|
|
225
232
|
*/
|
|
226
233
|
function registerDevice(deviceObj, callback) {
|
|
227
234
|
function checkDuplicates(deviceObj, innerCb) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
235
|
+
config.getRegistry().getSilently(
|
|
236
|
+
deviceObj.id,
|
|
237
|
+
deviceObj.service,
|
|
238
|
+
deviceObj.subservice,
|
|
239
|
+
/* eslint-disable-next-line no-unused-vars */
|
|
240
|
+
function (error, device) {
|
|
241
|
+
if (!error) {
|
|
242
|
+
innerCb(new errors.DuplicateDeviceId(deviceObj.id));
|
|
243
|
+
} else {
|
|
244
|
+
innerCb();
|
|
245
|
+
}
|
|
234
246
|
}
|
|
235
|
-
|
|
247
|
+
);
|
|
236
248
|
}
|
|
237
249
|
|
|
238
250
|
function prepareDeviceData(deviceObj, configuration, callback) {
|
|
@@ -262,17 +274,22 @@ function registerDevice(deviceObj, callback) {
|
|
|
262
274
|
}
|
|
263
275
|
|
|
264
276
|
if (!deviceData.name) {
|
|
265
|
-
|
|
277
|
+
let conjunction;
|
|
266
278
|
if (configuration && configuration.defaultEntityNameConjunction !== undefined) {
|
|
267
|
-
|
|
279
|
+
conjunction = configuration.defaultEntityNameConjunction;
|
|
268
280
|
} else {
|
|
269
281
|
conjunction = config.getConfig().defaultEntityNameConjunction;
|
|
270
282
|
}
|
|
271
283
|
deviceData.name = deviceData.type + conjunction + deviceData.id;
|
|
272
284
|
if (config.checkNgsiLD(configuration)) {
|
|
273
285
|
deviceData.name = 'urn:ngsi-ld:' + deviceData.type + conjunction + deviceData.id;
|
|
274
|
-
}
|
|
275
|
-
logger.debug(
|
|
286
|
+
}
|
|
287
|
+
logger.debug(
|
|
288
|
+
context,
|
|
289
|
+
'Device name not found, falling back to deviceType%sdeviceId [%s]',
|
|
290
|
+
conjunction,
|
|
291
|
+
deviceData.name
|
|
292
|
+
);
|
|
276
293
|
}
|
|
277
294
|
|
|
278
295
|
if (!configuration && config.getConfig().types[deviceData.type]) {
|
|
@@ -310,9 +327,6 @@ function registerDevice(deviceObj, callback) {
|
|
|
310
327
|
if ('timestamp' in deviceData && deviceData.timestamp !== undefined) {
|
|
311
328
|
deviceObj.timestamp = deviceData.timestamp;
|
|
312
329
|
}
|
|
313
|
-
if ('autoprovision' in deviceData && deviceData.autoprovision !== undefined) {
|
|
314
|
-
deviceObj.autoprovision = deviceData.autoprovision;
|
|
315
|
-
}
|
|
316
330
|
if ('explicitAttrs' in deviceData && deviceData.explicitAttrs !== undefined) {
|
|
317
331
|
deviceObj.explicitAttrs = deviceData.explicitAttrs;
|
|
318
332
|
}
|
|
@@ -402,8 +416,8 @@ function unregisterDevice(id, service, subservice, callback) {
|
|
|
402
416
|
});
|
|
403
417
|
}
|
|
404
418
|
|
|
405
|
-
function updateRegisterDevice(deviceObj, callback) {
|
|
406
|
-
deviceHandler.updateRegisterDevice(deviceObj, callback);
|
|
419
|
+
function updateRegisterDevice(deviceObj, entityInfoUpdated, callback) {
|
|
420
|
+
deviceHandler.updateRegisterDevice(deviceObj, entityInfoUpdated, callback);
|
|
407
421
|
}
|
|
408
422
|
|
|
409
423
|
/**
|
|
@@ -552,15 +566,24 @@ function findOrCreate(deviceId, group, callback) {
|
|
|
552
566
|
if ('timestamp' in group && group.timestamp !== undefined) {
|
|
553
567
|
newDevice.timestamp = group.timestamp;
|
|
554
568
|
}
|
|
555
|
-
if ('autoprovision' in group && group.autoprovision !== undefined) {
|
|
556
|
-
newDevice.autoprovision = group.autoprovision;
|
|
557
|
-
}
|
|
558
569
|
if ('ngsiVersion' in group && group.ngsiVersion !== undefined) {
|
|
559
570
|
newDevice.ngsiVersion = group.ngsiVersion;
|
|
560
571
|
}
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
}
|
|
572
|
+
if ('explicitAttrs' in group && group.explicitAttrs !== undefined) {
|
|
573
|
+
newDevice.explicitAttrs = group.explicitAttrs;
|
|
574
|
+
}
|
|
575
|
+
if ('expressionLanguage' in group && group.expressionLanguage !== undefined) {
|
|
576
|
+
newDevice.expressionLanguage = group.expressionLanguage;
|
|
577
|
+
}
|
|
578
|
+
// Check autoprovision flag in order to register or not device
|
|
579
|
+
if (group.autoprovision === undefined || group.autoprovision === true) {
|
|
580
|
+
registerDevice(newDevice, function (error, device) {
|
|
581
|
+
callback(error, device, group);
|
|
582
|
+
});
|
|
583
|
+
} else {
|
|
584
|
+
logger.info(context, 'Device %j not provisioned due autoprovision is disabled by its conf %j', newDevice, group);
|
|
585
|
+
callback(new errors.DeviceNotFound(deviceId));
|
|
586
|
+
}
|
|
564
587
|
} else {
|
|
565
588
|
callback(error);
|
|
566
589
|
}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* Modified by: Jason Fox - FIWARE Foundation
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
const request = require('request');
|
|
26
|
+
const request = require('../../request-shim');
|
|
27
27
|
const async = require('async');
|
|
28
28
|
const apply = async.apply;
|
|
29
29
|
const constants = require('../../constants');
|
|
@@ -275,7 +275,7 @@ function updateEntityNgsiLD(deviceData, updatedDevice, callback) {
|
|
|
275
275
|
*
|
|
276
276
|
* @param {Object} deviceObj Object with all the device information (mandatory).
|
|
277
277
|
*/
|
|
278
|
-
function updateRegisterDeviceNgsiLD(deviceObj, callback) {
|
|
278
|
+
function updateRegisterDeviceNgsiLD(deviceObj, entityInfoUpdated, callback) {
|
|
279
279
|
if (!deviceObj.id || !deviceObj.type) {
|
|
280
280
|
callback(new errors.MissingAttributes('Id or device missing'));
|
|
281
281
|
return;
|
|
@@ -350,21 +350,49 @@ function updateRegisterDeviceNgsiLD(deviceObj, callback) {
|
|
|
350
350
|
deviceData.commands = getAttributeDifference(oldDevice.commands, newDevice.commands);
|
|
351
351
|
deviceData.staticAttributes = getAttributeDifference(oldDevice.staticAttributes, newDevice.staticAttributes);
|
|
352
352
|
|
|
353
|
+
if (entityInfoUpdated) {
|
|
354
|
+
jsonConcat(deviceData.active, oldDevice.active);
|
|
355
|
+
jsonConcat(deviceData.lazy, oldDevice.lazy);
|
|
356
|
+
jsonConcat(deviceData.commands, oldDevice.commands);
|
|
357
|
+
jsonConcat(deviceData.staticAttributes, oldDevice.staticAttributes);
|
|
358
|
+
if (oldDevice.name !== newDevice.name) {
|
|
359
|
+
deviceData.name = newDevice.name;
|
|
360
|
+
}
|
|
361
|
+
if (oldDevice.type !== newDevice.type) {
|
|
362
|
+
deviceData.type = newDevice.type;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
353
366
|
callback(null, deviceData, oldDevice);
|
|
354
367
|
}
|
|
355
368
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
369
|
+
if (entityInfoUpdated) {
|
|
370
|
+
async.waterfall(
|
|
371
|
+
[
|
|
372
|
+
apply(config.getRegistry().get, deviceObj.id, deviceObj.service, deviceObj.subservice),
|
|
373
|
+
apply(extractDeviceDifference, deviceObj),
|
|
374
|
+
createInitialEntityNgsiLD,
|
|
375
|
+
apply(combineWithNewDevice, deviceObj),
|
|
376
|
+
apply(registrationUtils.sendRegistrations, false),
|
|
377
|
+
apply(registrationUtils.processContextRegistration, deviceObj),
|
|
378
|
+
config.getRegistry().update
|
|
379
|
+
],
|
|
380
|
+
callback
|
|
381
|
+
);
|
|
382
|
+
} else {
|
|
383
|
+
async.waterfall(
|
|
384
|
+
[
|
|
385
|
+
apply(config.getRegistry().get, deviceObj.id, deviceObj.service, deviceObj.subservice),
|
|
386
|
+
apply(extractDeviceDifference, deviceObj),
|
|
387
|
+
updateEntityNgsiLD,
|
|
388
|
+
apply(combineWithNewDevice, deviceObj),
|
|
389
|
+
apply(registrationUtils.sendRegistrations, false),
|
|
390
|
+
apply(registrationUtils.processContextRegistration, deviceObj),
|
|
391
|
+
config.getRegistry().update
|
|
392
|
+
],
|
|
393
|
+
callback
|
|
394
|
+
);
|
|
395
|
+
}
|
|
368
396
|
}
|
|
369
397
|
|
|
370
398
|
exports.createInitialEntity = createInitialEntityNgsiLD;
|
|
@@ -53,11 +53,11 @@ function createInitialEntityNgsiMixed(deviceData, newDevice, callback) {
|
|
|
53
53
|
*
|
|
54
54
|
* @param {Object} deviceObj Object with all the device information (mandatory).
|
|
55
55
|
*/
|
|
56
|
-
function updateRegisterDeviceNgsiMixed(deviceObj, callback) {
|
|
56
|
+
function updateRegisterDeviceNgsiMixed(deviceObj, entityInfoUpdated, callback) {
|
|
57
57
|
if (config.checkNgsiLD(deviceObj)) {
|
|
58
|
-
deviceHandlerLD.updateRegisterDevice(deviceObj, callback);
|
|
58
|
+
deviceHandlerLD.updateRegisterDevice(deviceObj, entityInfoUpdated, callback);
|
|
59
59
|
} else {
|
|
60
|
-
deviceHandlerV2.updateRegisterDevice(deviceObj, callback);
|
|
60
|
+
deviceHandlerV2.updateRegisterDevice(deviceObj, entityInfoUpdated, callback);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
/* eslint-disable consistent-return */
|
|
29
29
|
|
|
30
|
-
const request = require('request');
|
|
30
|
+
const request = require('../../request-shim');
|
|
31
31
|
const async = require('async');
|
|
32
32
|
const apply = async.apply;
|
|
33
33
|
const uuid = require('uuid');
|
|
@@ -94,7 +94,7 @@ function createInitialEntityHandlerNgsi2(deviceData, newDevice, callback) {
|
|
|
94
94
|
body
|
|
95
95
|
);
|
|
96
96
|
|
|
97
|
-
const errorObj = new errors.EntityGenericError(deviceData.id, deviceData.type, body);
|
|
97
|
+
const errorObj = new errors.EntityGenericError(deviceData.id, deviceData.type, body, response.statusCode);
|
|
98
98
|
|
|
99
99
|
callback(errorObj);
|
|
100
100
|
}
|
|
@@ -112,11 +112,7 @@ function createInitialEntityHandlerNgsi2(deviceData, newDevice, callback) {
|
|
|
112
112
|
function updateEntityHandlerNgsi2(deviceData, updatedDevice, callback) {
|
|
113
113
|
return function handleEntityResponse(error, response, body) {
|
|
114
114
|
if (error) {
|
|
115
|
-
logger.error(
|
|
116
|
-
context,
|
|
117
|
-
'ORION-001: Connection error creating inital entity in the Context Broker: %s',
|
|
118
|
-
error
|
|
119
|
-
);
|
|
115
|
+
logger.error(context, 'ORION-001: Connection error updating entity in the Context Broker: %s', error);
|
|
120
116
|
|
|
121
117
|
alarms.raise(constants.ORION_ALARM, error);
|
|
122
118
|
|
|
@@ -133,7 +129,7 @@ function updateEntityHandlerNgsi2(deviceData, updatedDevice, callback) {
|
|
|
133
129
|
body
|
|
134
130
|
);
|
|
135
131
|
|
|
136
|
-
const errorObj = new errors.EntityGenericError(deviceData.id, deviceData.type, body);
|
|
132
|
+
const errorObj = new errors.EntityGenericError(deviceData.id, deviceData.type, body, response.statusCode);
|
|
137
133
|
|
|
138
134
|
callback(errorObj);
|
|
139
135
|
}
|
|
@@ -335,7 +331,7 @@ function updateEntityNgsi2(deviceData, updatedDevice, callback) {
|
|
|
335
331
|
*
|
|
336
332
|
* @param {Object} deviceObj Object with all the device information (mandatory).
|
|
337
333
|
*/
|
|
338
|
-
function updateRegisterDeviceNgsi2(deviceObj, callback) {
|
|
334
|
+
function updateRegisterDeviceNgsi2(deviceObj, entityInfoUpdated, callback) {
|
|
339
335
|
if (!deviceObj.id || !deviceObj.type) {
|
|
340
336
|
callback(new errors.MissingAttributes('Id or device missing'));
|
|
341
337
|
return;
|
|
@@ -357,12 +353,12 @@ function updateRegisterDeviceNgsi2(deviceObj, callback) {
|
|
|
357
353
|
if ('timestamp' in newDevice && newDevice.timestamp !== undefined) {
|
|
358
354
|
oldDevice.timestamp = newDevice.timestamp;
|
|
359
355
|
}
|
|
360
|
-
if ('autoprovision' in newDevice && newDevice.autoprovision !== undefined) {
|
|
361
|
-
oldDevice.autoprovision = newDevice.autoprovision;
|
|
362
|
-
}
|
|
363
356
|
if ('explicitAttrs' in newDevice && newDevice.explicitAttrs !== undefined) {
|
|
364
357
|
oldDevice.explicitAttrs = newDevice.explicitAttrs;
|
|
365
358
|
}
|
|
359
|
+
if ('expressionLanguage' in newDevice && newDevice.expressionLanguage !== undefined) {
|
|
360
|
+
oldDevice.expressionLanguage = newDevice.expressionLanguage;
|
|
361
|
+
}
|
|
366
362
|
|
|
367
363
|
oldDevice.endpoint = newDevice.endpoint || oldDevice.endpoint;
|
|
368
364
|
|
|
@@ -410,21 +406,49 @@ function updateRegisterDeviceNgsi2(deviceObj, callback) {
|
|
|
410
406
|
deviceData.commands = getAttributeDifference(oldDevice.commands, newDevice.commands);
|
|
411
407
|
deviceData.staticAttributes = getAttributeDifference(oldDevice.staticAttributes, newDevice.staticAttributes);
|
|
412
408
|
|
|
409
|
+
if (entityInfoUpdated) {
|
|
410
|
+
jsonConcat(deviceData.active, oldDevice.active);
|
|
411
|
+
jsonConcat(deviceData.lazy, oldDevice.lazy);
|
|
412
|
+
jsonConcat(deviceData.commands, oldDevice.commands);
|
|
413
|
+
jsonConcat(deviceData.staticAttributes, oldDevice.staticAttributes);
|
|
414
|
+
if (oldDevice.name !== newDevice.name) {
|
|
415
|
+
deviceData.name = newDevice.name;
|
|
416
|
+
}
|
|
417
|
+
if (oldDevice.type !== newDevice.type) {
|
|
418
|
+
deviceData.type = newDevice.type;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
413
422
|
callback(null, deviceData, oldDevice);
|
|
414
423
|
}
|
|
415
424
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
425
|
+
if (entityInfoUpdated) {
|
|
426
|
+
async.waterfall(
|
|
427
|
+
[
|
|
428
|
+
apply(config.getRegistry().get, deviceObj.id, deviceObj.service, deviceObj.subservice),
|
|
429
|
+
apply(extractDeviceDifference, deviceObj),
|
|
430
|
+
createInitialEntityNgsi2,
|
|
431
|
+
apply(combineWithNewDevice, deviceObj),
|
|
432
|
+
apply(registrationUtils.sendRegistrations, false),
|
|
433
|
+
apply(registrationUtils.processContextRegistration, deviceObj),
|
|
434
|
+
config.getRegistry().update
|
|
435
|
+
],
|
|
436
|
+
callback
|
|
437
|
+
);
|
|
438
|
+
} else {
|
|
439
|
+
async.waterfall(
|
|
440
|
+
[
|
|
441
|
+
apply(config.getRegistry().get, deviceObj.id, deviceObj.service, deviceObj.subservice),
|
|
442
|
+
apply(extractDeviceDifference, deviceObj),
|
|
443
|
+
updateEntityNgsi2,
|
|
444
|
+
apply(combineWithNewDevice, deviceObj),
|
|
445
|
+
apply(registrationUtils.sendRegistrations, false),
|
|
446
|
+
apply(registrationUtils.processContextRegistration, deviceObj),
|
|
447
|
+
config.getRegistry().update
|
|
448
|
+
],
|
|
449
|
+
callback
|
|
450
|
+
);
|
|
451
|
+
}
|
|
428
452
|
}
|
|
429
453
|
|
|
430
454
|
exports.createInitialEntity = createInitialEntityNgsi2;
|
|
@@ -31,7 +31,6 @@ const logger = require('logops');
|
|
|
31
31
|
const _ = require('underscore');
|
|
32
32
|
const intoTrans = require('../common/domain').intoTrans;
|
|
33
33
|
const config = require('../../commonConfig');
|
|
34
|
-
const ngsiUtils = require('./../ngsi/ngsiUtils');
|
|
35
34
|
const context = {
|
|
36
35
|
op: 'IoTAgentNGSI.Registration'
|
|
37
36
|
};
|
|
@@ -40,45 +39,6 @@ const utils = require('../northBound/restUtils');
|
|
|
40
39
|
|
|
41
40
|
const NGSI_LD_URN = 'urn:ngsi-ld:';
|
|
42
41
|
|
|
43
|
-
/**
|
|
44
|
-
* Generates a handler for the registration requests that checks all the possible errors derived from the registration.
|
|
45
|
-
* The parameter information is needed in order to fulfill error information.
|
|
46
|
-
*
|
|
47
|
-
* @param {Boolen} unregister Indicates whether this registration is an unregistration or register.
|
|
48
|
-
* @param {Object} deviceData Object containing all the deviceData needed to send the registration.
|
|
49
|
-
* @return {Function} The generated handler.
|
|
50
|
-
*/
|
|
51
|
-
function createRegistrationHandler(unregister, deviceData, callback) {
|
|
52
|
-
return function handleRegistrationResponse(error, response, body) {
|
|
53
|
-
if (error) {
|
|
54
|
-
logger.error(context, 'ORION-002: Connection error sending registrations to the Context Broker: %s', error);
|
|
55
|
-
callback(error);
|
|
56
|
-
} else if (response && body && response.statusCode === 200) {
|
|
57
|
-
const errorField = ngsiUtils.getErrorField(body);
|
|
58
|
-
|
|
59
|
-
if (errorField) {
|
|
60
|
-
logger.error(context, 'Registration error connecting to the Context Broker: %j', errorField);
|
|
61
|
-
callback(new errors.BadRequest(JSON.stringify(errorField)));
|
|
62
|
-
} else {
|
|
63
|
-
logger.debug(context, 'Registration success.');
|
|
64
|
-
callback(null, body);
|
|
65
|
-
}
|
|
66
|
-
} else {
|
|
67
|
-
let errorObj;
|
|
68
|
-
|
|
69
|
-
logger.error(context, 'ORION-003: Protocol error connecting to the Context Broker: %j', errorObj);
|
|
70
|
-
|
|
71
|
-
if (unregister) {
|
|
72
|
-
errorObj = new errors.UnregistrationError(deviceData.id, deviceData.type);
|
|
73
|
-
} else {
|
|
74
|
-
errorObj = new errors.RegistrationError(deviceData.id, deviceData.type);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
callback(errorObj);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
42
|
/**
|
|
83
43
|
* Generates a handler for the registration requests that checks all the possible errors derived from the registration.
|
|
84
44
|
* The parameter information is needed in order to fulfill error information.
|
|
@@ -161,93 +121,6 @@ function createRegistrationHandlerNgsi2(unregister, deviceData, callback) {
|
|
|
161
121
|
};
|
|
162
122
|
}
|
|
163
123
|
|
|
164
|
-
/**
|
|
165
|
-
* Sends a Context Provider registration or unregistration request to the Context Broker using NGSIv1.
|
|
166
|
-
* As registrations cannot be removed, an unregistration consists of an update of the existent registration
|
|
167
|
-
* to make reduce its duration to 1 second.
|
|
168
|
-
*
|
|
169
|
-
* The entity type, entity name and lazy attributes list are needed in order to send the registration:
|
|
170
|
-
*
|
|
171
|
-
* @param {Boolen} unregister Indicates whether this registration is an unregistration or register.
|
|
172
|
-
* @param {Object} deviceData Object containing all the deviceData needed to send the registration.
|
|
173
|
-
*/
|
|
174
|
-
function sendRegistrationsNgsi1(unregister, deviceData, callback) {
|
|
175
|
-
let cbHost = config.getConfig().contextBroker.url;
|
|
176
|
-
if (deviceData.cbHost && deviceData.cbHost.indexOf('://') !== -1) {
|
|
177
|
-
cbHost = deviceData.cbHost;
|
|
178
|
-
} else if (deviceData.cbHost && deviceData.cbHost.indexOf('://') === -1) {
|
|
179
|
-
cbHost = 'http://' + deviceData.cbHost;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
const options = {
|
|
183
|
-
url: cbHost + '/NGSI9/registerContext',
|
|
184
|
-
method: 'POST',
|
|
185
|
-
json: {
|
|
186
|
-
contextRegistrations: [
|
|
187
|
-
{
|
|
188
|
-
entities: [
|
|
189
|
-
{
|
|
190
|
-
type: deviceData.type,
|
|
191
|
-
isPattern: 'false',
|
|
192
|
-
id: String(deviceData.name)
|
|
193
|
-
}
|
|
194
|
-
],
|
|
195
|
-
attributes: [],
|
|
196
|
-
providingApplication: config.getConfig().providerUrl
|
|
197
|
-
}
|
|
198
|
-
],
|
|
199
|
-
duration: unregister ? 'PT1S' : config.getConfig().deviceRegistrationDuration
|
|
200
|
-
},
|
|
201
|
-
headers: {
|
|
202
|
-
'fiware-service': deviceData.service,
|
|
203
|
-
'fiware-servicepath': deviceData.subservice
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
function formatAttributes(originalVector) {
|
|
208
|
-
const attributeList = [];
|
|
209
|
-
|
|
210
|
-
if (originalVector && originalVector.length) {
|
|
211
|
-
for (let i = 0; i < originalVector.length; i++) {
|
|
212
|
-
attributeList.push({
|
|
213
|
-
name: originalVector[i].name,
|
|
214
|
-
type: originalVector[i].type
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return attributeList;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function mergeWithSameName(old, current) {
|
|
223
|
-
const keys = _.pluck(old, 'name');
|
|
224
|
-
|
|
225
|
-
if (keys.indexOf(current.name) < 0) {
|
|
226
|
-
old.push(current);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
return old;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
if (deviceData.registrationId) {
|
|
233
|
-
options.json.registrationId = deviceData.registrationId;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
options.json.contextRegistrations[0].attributes = options.json.contextRegistrations[0].attributes
|
|
237
|
-
.concat(formatAttributes(deviceData.lazy), formatAttributes(deviceData.commands))
|
|
238
|
-
.reduce(mergeWithSameName, []);
|
|
239
|
-
|
|
240
|
-
if (options.json.contextRegistrations[0].attributes.length === 0) {
|
|
241
|
-
logger.debug(context, 'No Context Provider registrations found for unregister');
|
|
242
|
-
callback(null, deviceData);
|
|
243
|
-
} else {
|
|
244
|
-
logger.debug(context, 'Sending v1 device registrations to Context Broker at [%s]', options.url);
|
|
245
|
-
logger.debug(context, 'Using the following request:\n\n%s\n\n', JSON.stringify(options, null, 4));
|
|
246
|
-
|
|
247
|
-
utils.executeWithSecurity(options, deviceData, createRegistrationHandler(unregister, deviceData, callback));
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
124
|
/**
|
|
252
125
|
* Sends a Context Provider unregistration request to the Context Broker using NGSIv2.
|
|
253
126
|
*
|
|
@@ -263,7 +136,6 @@ function sendUnregistrationsNgsi2(deviceData, callback) {
|
|
|
263
136
|
const options = {
|
|
264
137
|
url: cbHost + '/v2/registrations/' + deviceData.registrationId,
|
|
265
138
|
method: 'DELETE',
|
|
266
|
-
json: true,
|
|
267
139
|
headers: {
|
|
268
140
|
'fiware-service': deviceData.service,
|
|
269
141
|
'fiware-servicepath': deviceData.subservice
|
|
@@ -304,7 +176,6 @@ function sendUnregistrationsNgsiLD(deviceData, callback) {
|
|
|
304
176
|
const options = {
|
|
305
177
|
url: cbHost + '/ngsi-ld/v1/csourceRegistrations/' + deviceData.registrationId,
|
|
306
178
|
method: 'DELETE',
|
|
307
|
-
json: true,
|
|
308
179
|
headers: {
|
|
309
180
|
'fiware-service': deviceData.service,
|
|
310
181
|
'fiware-servicepath': deviceData.subservice,
|
|
@@ -469,7 +340,6 @@ function sendRegistrationsNgsiLD(unregister, deviceData, callback) {
|
|
|
469
340
|
logger.debug(context, 'Amending id to a valid URN: %s', id);
|
|
470
341
|
}
|
|
471
342
|
|
|
472
|
-
|
|
473
343
|
const options = {
|
|
474
344
|
url: cbHost + '/ngsi-ld/v1/csourceRegistrations/',
|
|
475
345
|
method: 'POST',
|
|
@@ -514,11 +384,9 @@ function sendRegistrations(unregister, deviceData, callback) {
|
|
|
514
384
|
case 'ld':
|
|
515
385
|
sendRegistrationsNgsiLD(unregister, deviceData, callback);
|
|
516
386
|
break;
|
|
517
|
-
|
|
387
|
+
default:
|
|
518
388
|
sendRegistrationsNgsi2(unregister, deviceData, callback);
|
|
519
389
|
break;
|
|
520
|
-
default:
|
|
521
|
-
sendRegistrationsNgsi1(unregister, deviceData, callback);
|
|
522
390
|
}
|
|
523
391
|
}
|
|
524
392
|
|
|
@@ -540,5 +408,4 @@ function processContextRegistration(deviceData, body, callback) {
|
|
|
540
408
|
}
|
|
541
409
|
|
|
542
410
|
exports.sendRegistrations = intoTrans(context, sendRegistrations);
|
|
543
|
-
exports.createRegistrationHandler = intoTrans(context, createRegistrationHandler);
|
|
544
411
|
exports.processContextRegistration = processContextRegistration;
|