aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/Readme.txt132
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/pom.xml86
-rwxr-xr-xadapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/Application.java57
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/EtsiSol003AdapterBasicHttpSecurityConfigurer.java63
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-aaf.yaml0
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-basic.yaml0
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application.yaml63
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/org.onap.so.trust.jksbin3202 -> 0 bytes
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/so-vnfm-adapter.p12bin5834 -> 0 bytes
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/pom.xml24
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/CommonConstants.java47
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/VnfmAdapterUrlProvider.java105
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/AbstractServiceProviderConfiguration.java50
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/MessageConverterConfiguration.java49
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/AuthorizationServerConfig.java55
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2AccessTokenAdapter.java51
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2ResourceServer.java53
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/pom.xml114
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/LifeCycleManagementConstants.java33
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/NvfmAdapterUtils.java68
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/EtsiPackageProvider.java164
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiClientProvider.java34
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiHelper.java217
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiPropertiesImpl.java75
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProvider.java148
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProviderImpl.java164
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/OamIpAddressSource.java57
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/AccessInfo.java107
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/InterfaceInfo.java74
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/VimCredentials.java85
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmHelper.java228
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmRestTemplateConfiguration.java56
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProvider.java104
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java160
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderImpl.java203
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmUrlProvider.java95
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/JobManager.java174
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/VnfmOperation.java122
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/lifecycle/LifecycleManager.java276
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/notificationhandling/NotificationHandler.java276
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterController.java163
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantController.java114
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnContoller.java131
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/JobNotFoundException.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/TenantNotFoundException.java35
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfNotFoundException.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmNotFoundException.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmRequestFailureException.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties1
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java563
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/HealthCheckTest.java54
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantControllerTest.java252
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnControllerTest.java414
-rwxr-xr-xadapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/TestApplication.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/resources/application.yaml61
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/pom.xml221
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json1897
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json2774
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/etsisol003adapter.yaml525
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/pom.xml173
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/src/main/resources/SOL003-VNFLifecycleManagement-API.json8143
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-lcm/pom.xml17
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/pom.xml109
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/ConversionServiceConfiguration.java55
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/PackageManagementConstants.java39
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/AbstractCacheServiceProvider.java47
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheManagerConfiguration.java50
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheNotFoundException.java37
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProvider.java74
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProviderImpl.java118
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java63
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java85
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java76
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/VnfPkgInfoConverter.java198
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/sol003/etsicatalog/PkgmSubscriptionRequestConverter.java198
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java72
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProvider.java32
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java176
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderImpl.java281
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogSubscriptionServiceProvider.java55
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogUrlProvider.java113
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java64
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java166
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementController.java176
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionController.java172
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/AuthenticationTypeNotSupportedException.java44
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/ConversionFailedException.java44
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerBadRequestException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerRequestFailureException.java47
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiSubscriptionNotificationControllerExceptionHandler.java112
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/InternalServerErrorException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/NotificationTypeNotSupportedException.java44
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/Sol003PackageManagementControllerExceptionHandler.java94
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/SubscriptionNotFoundException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgBadRequestException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgConflictException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgNotFoundException.java43
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/AbstractNotificationServiceProvider.java59
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/BasicAuthNotificationServiceProvider.java68
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationManager.java137
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProvider.java51
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProviderFactory.java67
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthNotificationServiceProvider.java104
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthTokenResponse.java56
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/SubscriptionManager.java209
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/TlsNotificationServiceProvider.java57
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java591
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementControllerTest.java677
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionControllerTest.java403
-rwxr-xr-xadapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/TestApplication.java38
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/application.yaml61
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/requests/SubscriptionRequest.json45
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/pom.xml191
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/ETSI-Catalog-Notification-API.json279
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/SOL003-VNFPackageManagement-API.json7352
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/pom.xml192
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/ETSI-Catalog-API.json3121
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json1778
-rw-r--r--adapters/etsi-sol003-adapter/etsi-sol003-pkgm/pom.xml17
-rw-r--r--adapters/etsi-sol003-adapter/pom.xml35
-rw-r--r--adapters/mso-adapter-utils/pom.xml4
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java2
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java1
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java3
-rw-r--r--adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java6
-rw-r--r--adapters/mso-adapters-rest-interface/pom.xml2
-rw-r--r--adapters/mso-catalog-db-adapter/pom.xml4
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java33
-rw-r--r--adapters/mso-cnf-adapter/pom.xml153
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/MSOCnfApplication.java52
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/WebSecurityConfig.java35
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/exceptions/ApplicationException.java66
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/BpmnInstanceRequest.java87
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Config.java31
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigTemplateEntity.java42
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationEntity.java54
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationRollbackEntity.java22
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityInfo.java53
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityRecords.java23
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ErrorResponse.java63
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/GroupVersionKind.java66
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponse.java62
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponseList.java45
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceResponse.java99
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceStatusResponse.java84
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/MulticloudInstanceRequest.java87
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/OtherConnectivityListEntity.java23
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/PodStatus.java71
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ProfileEntity.java74
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Resource.java54
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ResourceBundleEntity.java65
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Response.java39
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Tag.java20
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java677
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java251
-rw-r--r--adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/util/CNfAdapterUtil.java94
-rw-r--r--adapters/mso-cnf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties1
-rw-r--r--adapters/mso-cnf-adapter/src/main/resources/application.yaml61
-rw-r--r--adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/CnfAdapterRestTest.java63
-rw-r--r--adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/rest/CnfAdapterRestTest.java106
-rw-r--r--adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java104
-rw-r--r--adapters/mso-nssmf-adapter/pom.xml164
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/MSONssmfApplication.java33
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/RequestLogger.java31
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/ServiceLogger.java36
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/NssmfAdapterConfig.java36
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/RequestDbConfig.java68
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/consts/NssmfAdapterConsts.java186
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterController.java59
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/ErrorResponse.java63
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfInfo.java41
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfUrlInfo.java17
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/RestResponse.java92
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenRequest.java33
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ActionType.java67
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ExecutorType.java25
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/HttpMethod.java41
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/JobStatus.java42
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/SelectionType.java27
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java66
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientPropertiesImpl.java69
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientProvider.java34
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java42
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java106
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/LoggerInterceptor.java55
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/RequestLogAspect.java227
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManager.java44
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManagerBuilder.java131
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/BaseNssmfManager.java282
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java243
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/InternalNssmfManager.java130
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java175
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalCnNssmfManager.java73
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/RanSliceProfile.java70
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalAnNssmfManager.java54
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalCnNssmfManager.java56
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalTnNssmfManager.java42
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java145
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java549
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java33
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/NssmfManagerService.java45
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImpl.java143
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java123
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java358
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties1
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/application-aaf.yaml0
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/application-basic.yaml0
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/application-test.yaml60
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/application.yaml77
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.p12bin4095 -> 0 bytes
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.trust.jksbin1413 -> 0 bytes
-rw-r--r--adapters/mso-nssmf-adapter/src/main/resources/subnetCapability.json10
-rw-r--r--adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java400
-rw-r--r--adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java442
-rw-r--r--adapters/mso-nssmf-adapter/src/test/resources/application-test.yaml60
-rw-r--r--adapters/mso-oof-adapter/.gitignore33
-rw-r--r--adapters/mso-oof-adapter/pom.xml118
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/MsoOofAdapterApplication.java32
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/OofAdapterClientConfig.java76
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/WebSecurityConfig.java37
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/constants/Constants.java31
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/exceptions/OofAdapterException.java39
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/model/OofRequest.java52
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofCallbackHandler.java71
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofClient.java67
-rw-r--r--adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/utils/OofUtils.java110
-rw-r--r--adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofCallbackHandlerTest.java85
-rw-r--r--adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofClientTest.java86
-rw-r--r--adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/utils/OofUtilsTest.java76
-rw-r--r--adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionOofRequest.json84
-rw-r--r--adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionResponse.json20
-rw-r--r--adapters/mso-openstack-adapters/pom.xml44
-rw-r--r--adapters/mso-requests-db-adapter/pom.xml20
-rw-r--r--adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/ArchiveInfraRequestsScheduler.java4
-rw-r--r--adapters/mso-sdnc-adapter/pom.xml37
-rw-r--r--adapters/mso-sdnc-adapter/src/test/resources/application-test.properties13
-rw-r--r--adapters/mso-vfc-adapter/.springBeans16
-rw-r--r--adapters/mso-vfc-adapter/README1
-rw-r--r--adapters/mso-vfc-adapter/pom.xml113
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/CXFConfiguration.java84
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/MSOVfcApplication.java37
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/RequestDBConfig.java69
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java157
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/DriverExceptionID.java62
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/HttpCode.java92
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/exceptions/ApplicationException.java75
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java68
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java40
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java67
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java49
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java49
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java78
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java40
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java51
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java31
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java53
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CustomerModel.java69
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java27
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java57
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java42
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java207
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java116
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java63
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java35
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java24
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java78
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraint.java73
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java47
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java80
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NSResourceInputParameter.java154
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java89
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java108
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java69
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCreateReq.java102
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java166
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java82
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstantiateReq.java50
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java125
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java46
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsOperationKey.java140
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsParameters.java70
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsProgressStatus.java84
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java37
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleParameters.java66
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleReq.java49
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java57
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java35
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java44
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java48
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java74
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java37
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java62
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java71
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java51
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResponseDescriptor.java114
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/RestfulResponse.java100
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java56
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java68
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsByStepsData.java88
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsData.java48
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VFCScaleData.java84
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VimLocation.java51
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java156
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java46
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java38
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java76
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java65
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java85
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java87
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/AaiUtil.java47
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java58
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java265
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManager.java492
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java620
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java137
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java393
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/ValidateUtil.java86
-rw-r--r--adapters/mso-vfc-adapter/src/main/resources/application-aaf.yaml0
-rw-r--r--adapters/mso-vfc-adapter/src/main/resources/application-basic.yaml0
-rw-r--r--adapters/mso-vfc-adapter/src/main/resources/application.yaml37
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/exceptions/ApplicationExceptionTest.java36
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java189
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java283
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CustomerModelTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java413
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java188
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java158
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java29
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java89
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java90
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NSResourceInputParameterTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsCreateReqTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsInstantiateReqTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java142
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsOperationKeyTest.java79
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsParametersTest.java51
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsProgressStatusTest.java60
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java41
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java168
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java773
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java59
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResponseDescriptorTest.java79
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/RestfulResponseTest.java75
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java179
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VimLocationTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/EmbeddedMariaDbConfig.java86
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/HealthCheckHandlerTest.java67
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java221
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerTest.java156
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java164
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/application-test.yaml64
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/LICENSE.txt19
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json10
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json56
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/createNsRsp.json3
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json210
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json7
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json32
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsRsp.json3
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json7
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/queryJobReq.json7
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/queryJobRsp.json10
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json7
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/terminateNsRsp.json3
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/logback-test.xml42
-rw-r--r--adapters/pom.xml7
-rw-r--r--adapters/so-appc-orchestrator/pom.xml25
-rw-r--r--asdc-controller/pom.xml2
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java4
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java3
-rw-r--r--asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java2
-rw-r--r--bpmn/MSOCommonBPMN/pom.xml5
-rw-r--r--bpmn/MSOCoreBPMN/pom.xml2
-rw-r--r--bpmn/mso-infrastructure-bpmn/pom.xml56
-rw-r--r--bpmn/pom.xml6
-rw-r--r--bpmn/so-bpmn-building-blocks/pom.xml20
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn80
-rw-r--r--bpmn/so-bpmn-infrastructure-common/pom.xml7
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy91
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/pom.xml60
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn2
-rw-r--r--bpmn/so-bpmn-tasks/pom.xml24
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java2
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java30
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/excpetion/VnfcMultipleRelationshipException.java (renamed from adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenResponse.java)16
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java23
-rw-r--r--bpmn/so-bpmn-tasks/src/test/resources/schema.sql390
-rw-r--r--common/pom.xml24
-rw-r--r--cxf-logging/pom.xml2
-rw-r--r--deployment-configs/pom.xml2
-rw-r--r--docs/developer_info/developer_information.rst1
-rw-r--r--docs/developer_info/pnf_pnp_workflow_migration_to_BB/Building_Block_based_PNF_PnP_flows.rst102
-rw-r--r--docs/developer_info/pnf_pnp_workflow_migration_to_BB/Legacy_PNF_PNP_BPMN_workflows.rst20
-rw-r--r--docs/developer_info/pnf_pnp_workflow_migration_to_BB/pnf_pnp_support_in_service_orchestration.rst13
-rw-r--r--docs/images/ConfigurePnfResource.pngbin0 -> 31512 bytes
-rw-r--r--docs/images/CreateAndActivatePnfResource.pngbin0 -> 69359 bytes
-rw-r--r--docs/images/goal3.pngbin0 -> 30784 bytes
-rw-r--r--docs/images/proposed_building_blocks.pngbin0 -> 47064 bytes
-rw-r--r--graph-inventory/aai-client/pom.xml2
-rw-r--r--graph-inventory/fluent-builder-maven-plugin/pom.xml2
-rw-r--r--graph-inventory/pom.xml2
-rw-r--r--mso-api-handlers/mso-api-handler-common/pom.xml9
-rw-r--r--mso-api-handlers/mso-api-handler-infra/pom.xml108
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstances.java23
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java1
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml4
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java4
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstancesTest.java2
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java12
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Onap3gppServiceInstancesTest/subnetCapability.json (renamed from mso-api-handlers/mso-api-handler-infra/src/main/resources/subnetCapability.json)16
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml5
-rw-r--r--mso-api-handlers/mso-requests-db-repositories/pom.xml5
-rw-r--r--mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/db/request/SiteStatusTest.java2
-rw-r--r--mso-api-handlers/mso-requests-db/pom.xml2
-rw-r--r--mso-api-handlers/pom.xml2
-rw-r--r--mso-catalog-db/pom.xml4
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java160
-rw-r--r--packages/docker/pom.xml207
-rw-r--r--packages/docker/src/main/docker/docker-files/Dockerfile.mso-cnf-adapter28
-rw-r--r--packages/docker/src/main/docker/docker-files/Dockerfile.so-nssmf-adapter32
-rw-r--r--packages/pom.xml2
-rw-r--r--pom.xml61
-rw-r--r--so-etsi-nfvo/pom.xml49
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/pom.xml20
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/pom.xml174
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/src/main/resources/SOL005-NSLifecycleManagement-API.json24383
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/pom.xml66
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/Application.java51
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/AsyncThreadExecutorConfiguration.java64
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/DefaultToShortClassNameBeanNameGenerator.java36
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-aaf.yaml13
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-basic.yaml13
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application.yaml69
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/pom.xml112
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaCustomConfiguration.java49
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaDatabaseConfiguration.java92
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaVariableNameConstants.java55
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/Constants.java39
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/GsonProvider.java44
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/EtsiCatalogManagerRequestFailureException.java41
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/NsRequestProcessingException.java54
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiClientProvider.java34
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiPropertiesImpl.java109
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProvider.java47
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProviderImpl.java106
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java39
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProviderImpl.java107
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java188
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogUrlProvider.java49
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterConfiguration.java148
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProvider.java37
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProviderImpl.java150
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterUrlProvider.java74
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileEntry.java112
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptor.java121
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/ToscaMetadata.java75
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/VirtualNetworkFunction.java123
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/FileParser.java33
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParser.java213
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/ToscaMetadataParser.java70
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/YamlFileParser.java40
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/JobExecutorService.java399
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowExecutorService.java59
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowQueryService.java108
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/AbstractNetworkServiceTask.java188
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateRequest.java167
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateVnfTask.java221
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateNsTask.java221
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/DeleteNsTask.java140
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/InstantiateNsTask.java328
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorInstantiateSol003AdapterNodeTask.java52
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterCreateJobTask.java105
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterJobTask.java96
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterNodeTask.java96
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateJobTask.java106
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateNodeTask.java55
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateNsTask.java134
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateVnfTask.java180
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/utils/LocalDateTimeTypeAdapter.java59
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateInstantiateVnf.bpmn159
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateNs.bpmn266
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/DeleteNs.bpmn260
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/InstantiateNs.bpmn331
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/META-INF/services/org.onap.so.client.RestProperties1
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateJob.bpmn160
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateNodeStatus.bpmn138
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateJob.bpmn160
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateNodeStatus.bpmn138
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateNs.bpmn307
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateVnf.bpmn171
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/BaseTest.java155
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java37
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java63
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/TestApplication.java45
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParserTest.java89
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java381
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/DeleteNsTaskTest.java177
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/InstantiateNsTaskTest.java327
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorInstantiateSol003AdapterNodeTaskTest.java93
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterCreateJobTaskTest.java156
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterTerminateJobTaskTest.java148
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/TerminateNsTaskTest.java218
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/application.yaml49
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/invalid_ns.csarbin778 -> 0 bytes
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/ns.csarbin2952 -> 0 bytes
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/pom.xml47
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/CancelModeType.java28
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobAction.java29
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobStatusEnum.java29
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJob.java277
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJobStatus.java151
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNfInst.java215
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNsInst.java293
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpOcc.java253
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpType.java28
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/OperationStateEnum.java29
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/State.java29
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/Utils.java59
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/config/NfvoDatabaseConfiguration.java95
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NSLcmOpOccRepository.java42
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobRepository.java35
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobStatusRepository.java30
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNfInstRepository.java50
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNsInstRepository.java46
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepository.java30
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepositoryImpl.java42
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/service/DatabaseServiceProvider.java183
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/resources/db/migration/V1_1__create_nfvo_tables.sql75
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/DatabaseServiceProviderTest.java180
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/PojoClassesTests.java93
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/TestApplication.java45
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/UtilsTest.java65
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/resources/application.yaml31
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/pom.xml78
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java39
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/EtsiSoNsLcmManagerUrlProvider.java53
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/GsonSerializerConfiguration.java42
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLcmOperationOccurrenceManager.java122
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLifeCycleManager.java90
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java85
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java156
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/exceptions/NsLcmControllerExceptionHandler.java58
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/TestApplication.java37
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesControllerTest.java133
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementControllerTest.java288
-rw-r--r--so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/resources/application.yaml41
-rw-r--r--so-monitoring/pom.xml66
-rw-r--r--so-monitoring/so-monitoring-handler/pom.xml91
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java187
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java87
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java128
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java105
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java195
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaConfiguration.java38
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java104
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseConfiguration.java37
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java47
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java43
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java66
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java35
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java86
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ActivityInstanceDetail.java192
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessDefinitionDetail.java76
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceDetail.java103
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceIdDetail.java66
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceVariableDetail.java84
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequest.java132
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequestBuilder.java148
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java45
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java169
-rw-r--r--so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/utils/ObjectEqualsUtils.java36
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java43
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java78
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java69
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java78
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java51
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java104
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java230
-rw-r--r--so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java69
-rw-r--r--so-monitoring/so-monitoring-service/pom.xml127
-rw-r--r--so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java39
-rw-r--r--so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java38
-rw-r--r--so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java234
-rw-r--r--so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java36
-rw-r--r--so-monitoring/so-monitoring-service/src/main/resources/application.yaml31
-rw-r--r--so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.p12bin4071 -> 0 bytes
-rw-r--r--so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.trust.jksbin1413 -> 0 bytes
-rw-r--r--so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java67
-rw-r--r--so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java422
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml24
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json254
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json4
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json59
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json5062
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json19
-rw-r--r--so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json161
-rw-r--r--so-monitoring/so-monitoring-ui/.gitignore27
-rw-r--r--so-monitoring/so-monitoring-ui/pom.xml93
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/.editorconfig13
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/.gitignore39
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/README.md27
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/angular.json136
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/e2e/protractor.conf.js28
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.e2e-spec.ts14
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.po.ts11
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/e2e/tsconfig.e2e.json13
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/package-lock.json10768
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/package.json55
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts46
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.html29
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.scss0
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.spec.ts57
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.ts33
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts77
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.spec.ts110
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts95
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.html112
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.scss88
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts218
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.ts224
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html205
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.scss130
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts178
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.ts140
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.constant.ts41
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.spec.ts44
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.ts53
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/SearchRequest.model.ts42
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/activityInstance.model.ts32
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/bpmnInfraRequest.model.ts32
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processDefinition.model.ts26
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstance.model.ts28
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstanceId.model.ts25
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts78
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.ts107
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/variableInstance.model.ts27
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html29
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.scss44
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.spec.ts61
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.ts39
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.crt23
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.key28
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.spec.ts43
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.ts59
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.html25
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.scss59
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.spec.ts51
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.ts35
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/assets/.gitkeep0
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/browserslist9
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.prod.ts3
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts28
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/favicon.pngbin728 -> 0 bytes
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/index.html42
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/karma.conf.js31
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/main.ts34
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/polyfills.ts80
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/styles.scss73
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/test.ts40
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.app.json12
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.spec.json19
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/src/tslint.json17
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/tsconfig.json20
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/tslint.json130
-rw-r--r--so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock6651
-rw-r--r--so-optimization-clients/pom.xml10
-rw-r--r--so-sdn-clients/pom.xml2
-rw-r--r--so-simulator/pom.xml2
694 files changed, 772 insertions, 130381 deletions
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/Readme.txt b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/Readme.txt
deleted file mode 100644
index aaad60320d..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/Readme.txt
+++ /dev/null
@@ -1,132 +0,0 @@
-The following describes how to configure authentication for the VNFM adapter.
-
-TLS should always be configured to ensure secure communication between the VNFM-adapter <-> BPMN infra and VNFM-adapter <-> VNFM
-If two-way TLS is configured then there is no need for any further authentication (i.e. no need for token or basic auth).
-If two-way TLS is NOT configured then authentication is REQUIRED. Oauth token based authentication must be used for requests, while for notifications either oauth tokens or basic auth can be used.
-
-
-==========================================
-To confgure TLS
-==========================================
-
----------------
-VNFM Adapter
----------------
-The following parameters can be set to configure the certificate for the VNFM adapter
-server:
- ssl:
- key-alias: so@so.onap.org
- key--store-password: 'ywsqCy:EEo#j}HJHM7z^Rk[L'
- key-store: classpath:so-vnfm-adapter.p12
- key-store-type: PKCS12
-The values shown above relate to the certificate included in the VNFM adapter jar which has been generated from AAF. If a different certificate is to be used then these values should be changed accordingly.
-
-The following paramters can be set to configure the trust store for the VNFM adapter:
-http:
- client:
- ssl:
- trust-store: classpath:org.onap.so.trust.jks
- trust-store-password: ',sx#.C*W)]wVgJC6ccFHI#:H'
-The values shown above relate to the trust store included in the VNFM adapter jar which has been generated from AAI. If a different trust store is to be used then these values should be changed accordingly.
-
-Ensure the value for the below parameter uses https instead of http
-vnfmadapter:
- endpoint: http://so-vnfm-adapter.onap:9092
-
----------------
-bpmn-infra
----------------
-For bpmn-infra, ensure the value for the below parameter uses https instead of http
-so:
- vnfm:
- adapter:
- url: https://so-vnfm-adapter.onap:9092/so/vnfm-adapter/v1/
-
-
-==========================================
-To use two way TLS
-==========================================
-
-Ensure the value for username and password are empty in the AAI entry for the VNFM (The VNFM adapter will use oauth instead of two way TLS if the username/password is set).
-Ensure TLS has been configuered as detailed above.
-
----------------
-VNFM adapter
----------------
-Set the following parameter for the VNFM adapter:
-server:
- ssl:
- client-auth: need
-
----------------
-bpmn-infra:
----------------
-Set the following paramters for bpmn-infra:
-rest:
- http:
- client:
- configuration:
- ssl:
- keyStore: classpath:org.onap.so.p12
- keyStorePassword: 'RLe5ExMWW;Kd6GTSt0WQz;.Y'
- trustStore: classpath:org.onap.so.trust.jks
- trustStorePassword: '6V%8oSU$,%WbYp3IUe;^mWt4'
-Ensure the value for the below parameter uses https instead of http
-so:
- vnfm:
- adapter:
- url: https://so-vnfm-adapter.onap:9092/so/vnfm-adapter/v1/
-
----------------
-VNFM simulator:
----------------
-Set the following parameters for the VNFM simulator (if used):
-server:
- ssl:
- client-auth: need
- request:
- grant:
- auth: twowaytls
-
-==========================================
-To use oauth token base authentication
-==========================================
-
----------------
-VNFM adapter:
----------------
-Ensure the value for username and password set set in the AAI entry for the VNFM. The VNFM adapter will use this username/password as the client credentials in the request for a token for the VNFM. The token endpoint
-for the VNFM will by default will be derived from the service url for the VNFM in AAI as follows: <base of service url>/oauth/token, e.g. if the service url is https://so-vnfm-simulator.onap/vnflcm/v1 then the token url will
-be taken to be https://so-vnfm-simulator.onap/oauth/token. This can be overriden using the following parameter for the VNFM adapter:
-vnfmadapter:
- temp:
- vnfm:
- oauth:
- endpoint:
-
-The VNFM adapter exposes a token point at url: https://<hostname>:<port>/oauth/token e.g. https://so-vnfm-adapter.onap:9092/oauth/token. The VNFM can request a token from this endpoint for use in grant requests and notifications
-to the VNFM adapter. The username/password to be used in the token request are passed to the VNFM in a subscription request. The username/password sent by the VNFM adpater in the subscription request can be configuered using the
-following parameter:
-vnfmadapter:
- auth: <encoded value>
-where <encoded value> is '<username>:<password>' encoded using org.onap.so.utils.CryptoUtils with the key set by the paramter:
-mso:
- key: <key>
-The default username:password is vnfm-adapter:123456 when vnfm-adapter.auth is not set.
-
----------------
-VNFM simulator:
----------------
-Set the following parameters for the simulator:
-spring:
- profiles:
- active: oauth-authentication
-server:
- request:
- grant:
- auth: oauth
-
-==========================================
-To use basic auth for notifications
-==========================================
-The same username/password is used as for oauth token requests as describe above and passed to the VNFM in the subscription request. \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/pom.xml
deleted file mode 100644
index e8b1fd08e6..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-adapter-application</artifactId>
- <name>ETSI SOL003 Application Jar</name>
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.adapters.etsisol003adapter.Application</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>original</id>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <so.log.level>DEBUG</so.log.level>
- </systemPropertyVariables>
- <rerunFailingTestsCount>2</rerunFailingTestsCount>
- <parallel>suites</parallel>
- <useUnlimitedThreads>false</useUnlimitedThreads>
- <threadCount>1</threadCount>
- </configuration>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <excludes>
- <exclude>**/*.p12</exclude>
- <exclude>**/*.jks</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>false</filtering>
- <includes>
- <include>**/*.p12</include>
- <include>**/*.jks</include>
- </includes>
- </resource>
- </resources>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/Application.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/Application.java
deleted file mode 100755
index 261d2244d7..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/Application.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.EtsiSol003AdapterController;
-import org.slf4j.Logger;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.cache.annotation.EnableCaching;
-
-/**
- * The spring boot application for the ETSI SOL003 Adapter.
- * <p>
- * The ETSI SOL003 Adapter receives requests through its REST API {@link EtsiSol003AdapterController} which it adapts
- * into ETSI SOL003 compliant LCM (Life Cycle Management) calls towards an ETSI compliant VNFM.
- *
- * @see <a href= "https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.05.01_60/gs_nfv-sol003v020501p.pdf">ETSI
- * SOL003 v2.5.1</a>
- */
-@EnableCaching
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-public class Application {
- private static final Logger logger = getLogger(Application.class);
-
- /**
- * Entry point for the Spring boot application
- *
- * @param args arguments for the application
- */
- public static void main(final String[] args) {
- new SpringApplication(Application.class).run(args);
- logger.info("VnfmAdapterApplication started!");
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/EtsiSol003AdapterBasicHttpSecurityConfigurer.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/EtsiSol003AdapterBasicHttpSecurityConfigurer.java
deleted file mode 100644
index 618b4f6116..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/java/org/onap/so/adapters/etsisol003adapter/EtsiSol003AdapterBasicHttpSecurityConfigurer.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter;
-
-import org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants;
-import org.onap.so.security.HttpSecurityConfigurer;
-import org.onap.so.security.SoUserCredentialConfiguration;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Primary;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Primary
-@Component
-public class EtsiSol003AdapterBasicHttpSecurityConfigurer implements HttpSecurityConfigurer {
-
- @Autowired
- private SoUserCredentialConfiguration soUserCredentialConfiguration;
-
- @Value("${server.ssl.client-auth:none}")
- private String clientAuth;
-
- @Override
- public void configure(final HttpSecurity http) throws Exception {
- if (("need").equalsIgnoreCase(clientAuth)) {
- http.csrf().disable().authorizeRequests().anyRequest().permitAll();
- } else {
- http.csrf().disable().authorizeRequests().antMatchers("/manage/health", "/manage/info").permitAll()
- .antMatchers(HttpMethod.GET, CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL).permitAll()
- .antMatchers("/**")
- .hasAnyRole(StringUtils.collectionToDelimitedString(soUserCredentialConfiguration.getRoles(), ","))
- .and().httpBasic();
- }
- }
-}
-
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-aaf.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-aaf.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-aaf.yaml
+++ /dev/null
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-basic.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-basic.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application-basic.yaml
+++ /dev/null
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application.yaml
deleted file mode 100644
index 57dc08f3b5..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/application.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright © 2019 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- security:
- usercredentials:
- - username: test
- password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
- role: BPEL-Client
- - username: vnfm
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- http:
- converters:
- preferred-json-mapper: gson
- main:
- allow-bean-definition-overriding: true
-
-server:
- port: 9092
- tomcat:
- max-threads: 50
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
-
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- version: v15
- endpoint: https://aai.onap:8443
-
-sdc:
- username: sdcUser
- password: sdcPassword
- key: adadadadad
- endpoint: http://sdc.onap/1234A
-
-vnfmadapter:
- endpoint: http://so-vnfm-adapter.onap:9092
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use.
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/org.onap.so.trust.jks b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/org.onap.so.trust.jks
deleted file mode 100644
index 4605a24f4c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/org.onap.so.trust.jks
+++ /dev/null
Binary files differ
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/so-vnfm-adapter.p12 b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/so-vnfm-adapter.p12
deleted file mode 100644
index 6bd786d596..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-application/src/main/resources/so-vnfm-adapter.p12
+++ /dev/null
Binary files differ
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/pom.xml
deleted file mode 100644
index 391a5c622d..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/pom.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-adapter-common</artifactId>
- <name>ETSI SOL003 Adapter Common</name>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.security.oauth</groupId>
- <artifactId>spring-security-oauth2</artifactId>
- <version>${spring-security-oauth2-version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/CommonConstants.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/CommonConstants.java
deleted file mode 100644
index dbe4dac321..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/CommonConstants.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsi.sol003.adapter.common;
-
-/**
- * VNFM Adapter Common constants
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-public class CommonConstants {
-
- public static final String SERVICE_NAME = "vnfm-adapter";
- public static final String SERVICE_VERSION = "v1";
- public static final String BASE_URL = "/so/" + SERVICE_NAME + "/" + SERVICE_VERSION;
-
- public static final String PACKAGE_MANAGEMENT_BASE_URL = BASE_URL + "/vnfpkgm/v1";
-
- public static final String ETSI_CATALOG_MANAGER_BASE_ENDPOINT = "/etsicatalogmanager";
- public static final String ETSI_SUBSCRIPTION_NOTIFICATION_ENDPOINT = "/notification";
- public static final String ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL =
- BASE_URL + ETSI_CATALOG_MANAGER_BASE_ENDPOINT;
- public static final String ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL =
- ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL + ETSI_SUBSCRIPTION_NOTIFICATION_ENDPOINT;
-
- public static final String OPERATION_NOTIFICATION_ENDPOINT = "/lcn/VnfLcmOperationOccurrenceNotification";
-
- private CommonConstants() {}
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/VnfmAdapterUrlProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/VnfmAdapterUrlProvider.java
deleted file mode 100644
index 855b5a454f..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/VnfmAdapterUrlProvider.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsi.sol003.adapter.common;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.BASE_URL;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.OPERATION_NOTIFICATION_ENDPOINT;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.PACKAGE_MANAGEMENT_BASE_URL;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import java.security.GeneralSecurityException;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.so.utils.CryptoUtils;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-
-/**
- * Provides VNFM Adapter endpoint URLs
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class VnfmAdapterUrlProvider {
-
- private static final Logger logger = getLogger(VnfmAdapterUrlProvider.class);
- private static final String COLON = ":";
- private static final int LIMIT = 2;
-
- private final String vnfmAdapterEndpoint;
- private final String msoKeyString;
- private final String vnfmAdapterAuth;
-
- @Autowired
- public VnfmAdapterUrlProvider(@Value("${vnfmadapter.endpoint}") final String vnfmAdapterEndpoint,
- @Value("${mso.key}") final String msoKeyString,
- @Value("${vnfmadapter.auth:BF29BA36F0CFE1C05507781F6B97EFBCA7EFAC9F595954D465FC43F646883EF585C20A58CBB02528A6FAAC}") final String vnfmAdapterAuth) {
- this.vnfmAdapterEndpoint = vnfmAdapterEndpoint;
- this.msoKeyString = msoKeyString;
- this.vnfmAdapterAuth = vnfmAdapterAuth;
- }
-
- public String getEtsiSubscriptionNotificationBaseUrl() {
- return vnfmAdapterEndpoint + ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL;
- }
-
- public URI getSubscriptionUri(final String subscriptionId) {
- return URI.create(getSubscriptionUriString(subscriptionId));
- }
-
- public ImmutablePair<String, String> getDecryptAuth() throws GeneralSecurityException {
- final String decryptedAuth = CryptoUtils.decrypt(vnfmAdapterAuth, msoKeyString);
- final String[] auth = decryptedAuth.split(COLON, LIMIT);
- if (auth.length > 1) {
- return ImmutablePair.of(auth[0], auth[1]);
- }
- logger.error("Unexpected auth value: {}", vnfmAdapterAuth);
- return ImmutablePair.nullPair();
- }
-
- public String getSubscriptionUriString(final String subscriptionId) {
- return vnfmAdapterEndpoint + PACKAGE_MANAGEMENT_BASE_URL + "/subscriptions/" + subscriptionId;
- }
-
- public String getVnfLcmOperationOccurrenceNotificationUrl() {
- return vnfmAdapterEndpoint + BASE_URL + OPERATION_NOTIFICATION_ENDPOINT;
- }
-
- public String getVnfPackageUrl(final String vnfPkgId) {
- return vnfmAdapterEndpoint + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/" + vnfPkgId;
- }
-
- public String getVnfPackageVnfdUrl(final String vnfPkgId) {
- return getVnfPackageUrl(vnfPkgId) + "/vnfd";
- }
-
- public String getVnfPackageContentUrl(final String vnfPkgId) {
- return getVnfPackageUrl(vnfPkgId) + "/package_content";
- }
-
- public String getOauthTokenUrl() {
- return vnfmAdapterEndpoint + "/oauth/token";
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/AbstractServiceProviderConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/AbstractServiceProviderConfiguration.java
deleted file mode 100644
index 6161fa60f9..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/AbstractServiceProviderConfiguration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsi.sol003.adapter.common.configuration;
-
-import java.util.Iterator;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * A base class that can be extended by classes for configuring HttpRestServiceProvider classes. Provides common methods
- * that will be useful to some such classes.
- *
- * @author gareth.roper@est.tech
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-public abstract class AbstractServiceProviderConfiguration {
-
- public void setGsonMessageConverter(final RestTemplate restTemplate) {
- final Iterator<HttpMessageConverter<?>> iterator = restTemplate.getMessageConverters().iterator();
- while (iterator.hasNext()) {
- if (iterator.next() instanceof MappingJackson2HttpMessageConverter) {
- iterator.remove();
- }
- }
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(getGson()));
- }
-
- protected abstract Gson getGson();
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/MessageConverterConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/MessageConverterConfiguration.java
deleted file mode 100644
index 25c37b9016..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/configuration/MessageConverterConfiguration.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsi.sol003.adapter.common.configuration;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import org.onap.so.adapters.etsi.sol003.adapter.oauth.configuration.OAuth2AccessTokenAdapter;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-/**
- * Configures message converter
- */
-@Configuration
-public class MessageConverterConfiguration {
-
- @Bean
- public HttpMessageConverters customConverters() {
- final Collection<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
- final Gson gson = new GsonBuilder()
- .registerTypeHierarchyAdapter(OAuth2AccessToken.class, new OAuth2AccessTokenAdapter()).create();
- final GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter(gson);
- messageConverters.add(gsonHttpMessageConverter);
- return new HttpMessageConverters(true, messageConverters);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/AuthorizationServerConfig.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/AuthorizationServerConfig.java
deleted file mode 100644
index 3a3287535e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/AuthorizationServerConfig.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsi.sol003.adapter.oauth.configuration;
-
-import org.onap.so.utils.CryptoUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
-import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
-
-@Configuration
-@EnableAuthorizationServer
-/**
- * Configures the authorization server for oauth token based authentication.
- */
-public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
-
- private static final int ONE_DAY = 60 * 60 * 24;
-
- @Value("${vnfmadapter.auth:E39823AAB2739CC654C4E92B52C05BC34149342D0A46451B00CA508C8EDC62242CE4E9DA9445D3C01A3F13}")
- private String vnfmAdapterAuth;
-
- @Value("${mso.key}")
- private String msoEncryptionKey;
-
- @Override
- public void configure(final ClientDetailsServiceConfigurer clients) throws Exception {
- final String[] decrypedAuth = CryptoUtils.decrypt(vnfmAdapterAuth, msoEncryptionKey).split(":");
- final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
- clients.inMemory().withClient(decrypedAuth[0]).secret(passwordEncoder.encode(decrypedAuth[1]))
- .authorizedGrantTypes("client_credentials").scopes("write").accessTokenValiditySeconds(ONE_DAY)
- .refreshTokenValiditySeconds(ONE_DAY);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2AccessTokenAdapter.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2AccessTokenAdapter.java
deleted file mode 100644
index 4be5b8a86a..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2AccessTokenAdapter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsi.sol003.adapter.oauth.configuration;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import java.lang.reflect.Type;
-import org.springframework.security.oauth2.common.OAuth2AccessToken;
-
-public class OAuth2AccessTokenAdapter implements JsonSerializer<OAuth2AccessToken> {
-
- @Override
- public JsonElement serialize(final OAuth2AccessToken src, final Type typeOfSrc,
- final JsonSerializationContext context) {
- final JsonObject obj = new JsonObject();
- obj.addProperty(OAuth2AccessToken.ACCESS_TOKEN, src.getValue());
- obj.addProperty(OAuth2AccessToken.TOKEN_TYPE, src.getTokenType());
- if (src.getRefreshToken() != null) {
- obj.addProperty(OAuth2AccessToken.REFRESH_TOKEN, src.getRefreshToken().getValue());
- }
- obj.addProperty(OAuth2AccessToken.EXPIRES_IN, src.getExpiresIn());
- final JsonArray scopeObj = new JsonArray();
- for (final String scope : src.getScope()) {
- scopeObj.add(scope);
- }
- obj.add(OAuth2AccessToken.SCOPE, scopeObj);
-
- return obj;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2ResourceServer.java b/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2ResourceServer.java
deleted file mode 100644
index 2dcfea4045..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/oauth/configuration/OAuth2ResourceServer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsi.sol003.adapter.oauth.configuration;
-
-import javax.servlet.http.HttpServletRequest;
-import org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
-import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
-import org.springframework.security.web.util.matcher.RequestMatcher;
-
-@Configuration
-@EnableResourceServer
-/**
- * Enforces oauth token based authentication when a token is provided in the request.
- */
-public class OAuth2ResourceServer extends ResourceServerConfigurerAdapter {
-
- @Override
- public void configure(final HttpSecurity http) throws Exception {
- http.requestMatcher(new OAuth2ResourceServerRequestMatcher()).authorizeRequests()
- .antMatchers(CommonConstants.BASE_URL + "/grants/**", CommonConstants.BASE_URL + "/lcn/**")
- .authenticated();
- }
-
- private static class OAuth2ResourceServerRequestMatcher implements RequestMatcher {
- @Override
- public boolean matches(HttpServletRequest request) {
- String auth = request.getHeader("Authorization");
- String uri = request.getRequestURI();
- return (auth != null && auth.startsWith("Bearer") && (uri.contains("/grants") || uri.contains("/lcn/")));
- }
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/pom.xml
deleted file mode 100644
index 6ed9afcc75..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/pom.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-lcm-adapter</artifactId>
- <name>ETSI SOL003 Life Cycle Management Adapter</name>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <so.log.level>DEBUG</so.log.level>
- </systemPropertyVariables>
- <rerunFailingTestsCount>2</rerunFailingTestsCount>
- <parallel>suites</parallel>
- <useUnlimitedThreads>false</useUnlimitedThreads>
- <threadCount>1</threadCount>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm-ext-clients</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.inject</groupId>
- <artifactId>jersey-hk2</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-json-jackson</artifactId>
- </dependency>
- <dependency>
- <groupId>org.yaml</groupId>
- <artifactId>snakeyaml</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-</project>
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/LifeCycleManagementConstants.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/LifeCycleManagementConstants.java
deleted file mode 100644
index d9804072b7..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/LifeCycleManagementConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm;
-
-/**
- * ETSI SOL003 Life Cycle Management Adapter constants
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-public class LifeCycleManagementConstants {
-
- public static final String OPERATION_NOTIFICATION_ENDPOINT = "/lcn/VnfLcmOperationOccurrenceNotification";
-
- private LifeCycleManagementConstants() {}
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/NvfmAdapterUtils.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/NvfmAdapterUtils.java
deleted file mode 100644
index 367d8b244f..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/NvfmAdapterUtils.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.ArrayList;
-import java.util.Collection;
-import org.slf4j.Logger;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-
-public final class NvfmAdapterUtils {
- private static Logger logger = getLogger(NvfmAdapterUtils.class);
-
- private NvfmAdapterUtils() {
- throw new IllegalStateException("Utility class");
- }
-
- public static JsonObject child(final JsonObject parent, final String name) {
- return childElement(parent, name).getAsJsonObject();
- }
-
- public static JsonElement childElement(final JsonObject parent, final String name) {
- final JsonElement child = parent.get(name);
- if (child == null) {
- throw abortOperation("Missing child " + name);
- }
- return child;
- }
-
- public static Collection<JsonObject> children(final JsonObject parent) {
- final ArrayList<JsonObject> childElements = new ArrayList<>();
- for (final String childKey : parent.keySet()) {
- if (parent.get(childKey).isJsonObject()) {
- childElements.add(parent.get(childKey).getAsJsonObject());
- }
- }
- return childElements;
- }
-
- public static RuntimeException abortOperation(final String msg, final Exception e) {
- logger.error(msg, e);
- return new RuntimeException(msg, e);
- }
-
- public static RuntimeException abortOperation(final String msg) {
- logger.error(msg);
- return new RuntimeException(msg);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/EtsiPackageProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/EtsiPackageProvider.java
deleted file mode 100644
index ec46af45cd..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/EtsiPackageProvider.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients;
-
-import static com.google.common.base.Splitter.on;
-import static com.google.common.collect.Iterables.filter;
-import static org.onap.so.adapters.etsisol003adapter.lcm.NvfmAdapterUtils.abortOperation;
-import static org.onap.so.adapters.etsisol003adapter.lcm.NvfmAdapterUtils.child;
-import static org.onap.so.adapters.etsisol003adapter.lcm.NvfmAdapterUtils.childElement;
-import static org.onap.so.adapters.etsisol003adapter.lcm.NvfmAdapterUtils.children;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProviderImpl;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.yaml.snakeyaml.Yaml;
-import com.google.common.io.ByteStreams;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
-
-@Component
-public class EtsiPackageProvider {
- private static final String TOCSA_METADATA_FILE_PATH = "TOSCA-Metadata/TOSCA.meta";
- private static final String TOSCA_VNFD_KEY = "Entry-Definitions";
- private static Logger logger = getLogger(EtsiPackageProvider.class);
-
- @Autowired
- private EtsiCatalogServiceProviderImpl etsiCatalogServiceProviderImpl;
-
- public String getVnfdId(final String csarId) {
- return getVnfNodeProperty(csarId, "descriptor_id");
- }
-
- private String getVnfNodeProperty(final String csarId, final String propertyName) {
- logger.debug("Getting {} from {}", propertyName, csarId);
- final byte[] onapPackage = getPackage(csarId);
-
- try {
- final String vnfdLocation = getVnfdLocation(new ByteArrayInputStream(onapPackage));
- final String onapVnfdContent = getFileInZip(new ByteArrayInputStream(onapPackage), vnfdLocation).toString();
- logger.debug("VNFD CONTENTS: {}", onapVnfdContent);
- final JsonObject root = new Gson().toJsonTree(new Yaml().load(onapVnfdContent)).getAsJsonObject();
-
- final JsonObject topologyTemplates = child(root, "topology_template");
- final JsonObject nodeTemplates = child(topologyTemplates, "node_templates");
- for (final JsonObject child : children(nodeTemplates)) {
- final String type = childElement(child, "type").getAsString();
- String propertyValue = null;
- if ("tosca.nodes.nfv.VNF".equals(type)) {
- final JsonObject properties = child(child, "properties");
- logger.debug("properties: {}", properties);
- propertyValue = properties.get(propertyName).getAsJsonPrimitive().getAsString();
- if (propertyValue == null) {
- propertyValue = getValueFromNodeTypeDefinition(root, type, propertyName);
- }
- return propertyValue;
- }
-
- }
-
- } catch (final Exception e) {
- throw new IllegalArgumentException("Unable to extract " + propertyName + " from ONAP package", e);
- }
- throw new IllegalArgumentException("Unable to extract " + propertyName + " from ONAP package");
- }
-
- private String getValueFromNodeTypeDefinition(final JsonObject root, final String nodeTypeName,
- final String propertyName) {
- final JsonObject nodeTypes = child(root, "node_types");
- final JsonObject nodeType = child(nodeTypes, nodeTypeName);
-
- if ("tosca.nodes.nfv.VNF".equals(childElement(nodeType, "derived_from").getAsString())) {
- final JsonObject properties = child(nodeType, "properties");
- logger.debug("properties: {}", properties);
- final JsonObject property = child(properties, propertyName);
- logger.debug("property: {}", property);
- logger.debug("property default: {}", childElement(property, "default"));
- return childElement(property, "default").getAsJsonPrimitive().getAsString();
- }
- return null;
- }
-
- private byte[] getPackage(final String csarId) {
- try {
- final Optional<byte[]> optional = etsiCatalogServiceProviderImpl.getVnfPackageContent(csarId);
- if (optional.isPresent()) {
- return optional.get();
- }
- } catch (final Exception exception) {
- logger.error("Unable to retrieve package from ETSI Catalog Manager using pkgId: {}", csarId);
- throw new EtsiCatalogManagerRequestFailureException("Value is not present", exception);
- }
- logger.error("Unable to retrieve package from ETSI Catalog Manager using pkgId: {}", csarId);
- throw new EtsiCatalogManagerRequestFailureException("Value is not present");
- }
-
- private String getVnfdLocation(final InputStream stream) throws IOException {
- final String toscaMetadata = new String(getFileInZip(stream, TOCSA_METADATA_FILE_PATH).toByteArray());
- if (!toscaMetadata.isEmpty()) {
- final String toscaVnfdLine =
- filter(on("\n").split(toscaMetadata), line -> line.contains(TOSCA_VNFD_KEY)).iterator().next();
- return toscaVnfdLine.replace(TOSCA_VNFD_KEY + ":", "").trim();
- }
- throw abortOperation("Unable to find valid Tosca Path");
- }
-
- private static ByteArrayOutputStream getFileInZip(final InputStream zip, final String path) throws IOException {
- final ZipInputStream zipInputStream = new ZipInputStream(zip);
- final ByteArrayOutputStream fileContent = getFileInZip(zipInputStream, path);
- zipInputStream.close();
- return fileContent;
- }
-
- private static ByteArrayOutputStream getFileInZip(final ZipInputStream zipInputStream, final String path)
- throws IOException {
- ZipEntry zipEntry;
- final Set<String> items = new HashSet<>();
- while ((zipEntry = zipInputStream.getNextEntry()) != null) {
- items.add(zipEntry.getName());
- if (zipEntry.getName().matches(path)) {
- final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- ByteStreams.copy(zipInputStream, byteArrayOutputStream);
- return byteArrayOutputStream;
- }
- }
- logger.error("Unable to find the {} in archive found: {}", path, items);
- throw new NoSuchElementException("Unable to find the " + path + " in archive found: " + items);
- }
-
- public String getFlavourId(final String csarId) {
- return getVnfNodeProperty(csarId, "flavour_id");
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiClientProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiClientProvider.java
deleted file mode 100644
index 529be0eb2e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiClientProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class AaiClientProvider {
-
- @Bean
- public AAIResourcesClient getAaiClient() {
- return new AAIResourcesClient();
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiHelper.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiHelper.java
deleted file mode 100644
index 958d2ebca8..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiHelper.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.EsrVnfmList;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.aai.domain.yang.RelationshipData;
-import org.onap.aai.domain.yang.Vserver;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.TenantNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * Provides helper methods for interactions with AAI.
- */
-@Service
-public class AaiHelper {
-
- private static final Logger logger = LoggerFactory.getLogger(AaiHelper.class);
- private final AaiServiceProvider aaiServiceProvider;
- private final Map<String, OamIpAddressSource> mapOfVnfIdToOamIpAddressHolder = new HashMap<>();
-
- @Autowired
- public AaiHelper(final AaiServiceProvider aaiServiceProvider) {
- this.aaiServiceProvider = aaiServiceProvider;
- }
-
- /**
- * Get the VNFM assigned for use for the given generic VNF.
- *
- * @param vnf the generic VNF
- * @return the VNFM to use, or <code>null</code> if no VNFM has been assigned yet
- */
- public EsrVnfm getAssignedVnfm(final GenericVnf vnf) {
- final String vnfmId = getIdOfAssignedVnfm(vnf);
- return vnfmId == null ? null : aaiServiceProvider.invokeGetVnfm(vnfmId);
- }
-
- /**
- * Get the ID of the VNFM assigned for use for the given generic VNF.
- *
- * @param vnf the generic VNF
- * @return the ID of the VNFM to use, or <code>null</code> if no VNFM has been assigned yet
- */
- public String getIdOfAssignedVnfm(final GenericVnf vnf) {
- final Relationship relationship = getRelationship(vnf, "esr-vnfm");
- return getRelationshipData(relationship, "esr-vnfm.vnfm-id");
- }
-
- /**
- * Get the tenant assigned for use for the given generic VNF.
- *
- * @param vnf the generic VNF
- * @return the tenant to use, or <code>null</code> if no tenant has been assigned yet
- */
- public Tenant getAssignedTenant(final GenericVnf vnf) {
- final Relationship relationship = getRelationship(vnf, "tenant");
- final String cloudOwner = getRelationshipData(relationship, "cloud-region.cloud-owner");
- final String cloudRegion = getRelationshipData(relationship, "cloud-region.cloud-region-id");
- final String tenantId = getRelationshipData(relationship, "tenant.tenant-id");
- if (cloudOwner == null || cloudRegion == null || tenantId == null) {
- throw new TenantNotFoundException("No matching Tenant found in AAI. VNFID: " + vnf.getVnfId());
- } else {
- return new Tenant().cloudOwner(cloudOwner).regionName(cloudRegion).tenantId(tenantId);
- }
- }
-
- private Relationship getRelationship(final GenericVnf vnf, final String relationshipRelatedToValue) {
- for (final Relationship relationship : vnf.getRelationshipList() == null ? Collections.<Relationship>emptyList()
- : vnf.getRelationshipList().getRelationship()) {
- if (relationship.getRelatedTo().equals(relationshipRelatedToValue)) {
- return relationship;
- }
- }
- return null;
- }
-
- /**
- * Get the value of the relationship data with the given key in the given relationship.
- *
- * @param relationship the relationship
- * @param relationshipDataKey the key for the relationship data
- * @return the value of the relationship data for the given key
- */
- public String getRelationshipData(final Relationship relationship, final String relationshipDataKey) {
- if (relationship != null) {
- for (final RelationshipData relationshipData : relationship.getRelationshipData()) {
- if (relationshipData.getRelationshipKey().equals(relationshipDataKey)) {
- return relationshipData.getRelationshipValue();
- }
- }
- }
- return null;
- }
-
- /**
- * Delete from the given VNF the relationship matching the given criteria.
- *
- * @param vnf the VNF
- * @param relationshipRelatedToValue the related-to value for the relationship
- * @param dataKey the relationship data key to match on
- * @param dataValue the value the relationship data with the given key must match
- * @return the deleted relationship or <code>null</code> if none found matching the given criteria
- */
- public Relationship deleteRelationshipWithDataValue(final GenericVnf vnf, final String relationshipRelatedToValue,
- final String dataKey, final String dataValue) {
- final Iterator<Relationship> relationships =
- vnf.getRelationshipList() == null ? Collections.<Relationship>emptyList().iterator()
- : vnf.getRelationshipList().getRelationship().iterator();
-
- while (relationships.hasNext()) {
- final Relationship relationship = relationships.next();
- if (relationship.getRelatedTo().equals(relationshipRelatedToValue)
- && dataValue.equals(getRelationshipData(relationship, dataKey))) {
- relationships.remove();
- return relationship;
- }
- }
- return null;
- }
-
- /**
- * Select a VNFM to use for the given generic VNF. Should only be used when no VNFM has already been assigned to the
- * VNF.
- *
- * @param vnf the generic VNF
- * @return the VNFM to use
- */
- public EsrVnfm selectVnfm(final GenericVnf vnf) {
- final EsrVnfmList vnfmsInEsr = aaiServiceProvider.invokeGetVnfms();
-
- if (vnfmsInEsr == null) {
- throw new VnfmNotFoundException("No VNFMs found in AAI ESR");
- }
- logger.debug("VNFMs in ESR: " + vnfmsInEsr);
-
- for (final EsrVnfm vnfm : vnfmsInEsr.getEsrVnfm()) {
- final EsrSystemInfoList systemInfolist =
- aaiServiceProvider.invokeGetVnfmEsrSystemInfoList(vnfm.getVnfmId());
- vnfm.setEsrSystemInfoList(systemInfolist);
- if (vnfmHasMatchingEsrSystemInfoType(vnfm, vnf.getNfType())) {
- return vnfm;
- }
- }
- throw new VnfmNotFoundException("No matching VNFM found in AAI ESR");
- }
-
- private boolean vnfmHasMatchingEsrSystemInfoType(final EsrVnfm vnfm, final String type) {
- logger.debug("Checking VNFM ID: " + vnfm + ": " + vnfm.getVnfmId());
-
- final EsrSystemInfoList systemInfolist = vnfm.getEsrSystemInfoList();
- if (systemInfolist != null) {
- for (final EsrSystemInfo esrSystemInfo : systemInfolist.getEsrSystemInfo()) {
- if (esrSystemInfo.getType().equals(type)) {
- logger.debug("Matched VNFM ID: " + vnfm + ", based on type");
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Create a vserver.
- *
- * @param vnfc the VNFC to base the vserver on
- * @return the vserver
- */
- public Vserver createVserver(final LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs vnfc) {
- final Vserver vserver = new Vserver();
- vserver.setVserverId(vnfc.getComputeResource().getResourceId());
- vserver.setVserverName(vnfc.getId());
- vserver.setProvStatus("active");
- vserver.setVserverSelflink("Not available");
- return vserver;
- }
-
- public void setOamIpAddressSource(final String vnfId, final OamIpAddressSource oamIpAddressSource) {
- mapOfVnfIdToOamIpAddressHolder.put(vnfId, oamIpAddressSource);
- }
-
- public OamIpAddressSource getOamIpAddressSource(final String vnfId) {
- return mapOfVnfIdToOamIpAddressHolder.get(vnfId);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiPropertiesImpl.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiPropertiesImpl.java
deleted file mode 100644
index 9e08cda354..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiPropertiesImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-import org.onap.aaiclient.client.aai.AAIProperties;
-import org.onap.aaiclient.client.aai.AAIVersion;
-import org.onap.so.spring.SpringContextHelper;
-import org.springframework.context.ApplicationContext;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class AaiPropertiesImpl implements AAIProperties {
-
- private final String endpoint;
- private final String encryptedBasicAuth;
- private final String encrytptionKey;
- private final String aaiVersion;
-
- public AaiPropertiesImpl() {
- final ApplicationContext context = SpringContextHelper.getAppContext();
- this.endpoint = context.getEnvironment().getProperty("aai.endpoint");
- this.encryptedBasicAuth = context.getEnvironment().getProperty("aai.auth");
- this.encrytptionKey = context.getEnvironment().getProperty("mso.key");
- this.aaiVersion = context.getEnvironment().getProperty("aai.version");
-
- }
-
- @Override
- public URL getEndpoint() throws MalformedURLException {
- return new URL(endpoint);
- }
-
- @Override
- public String getSystemName() {
- return "MSO";
- }
-
- @Override
- public AAIVersion getDefaultVersion() {
- for (final AAIVersion version : AAIVersion.values()) {
- if (version.toString().equalsIgnoreCase(this.aaiVersion)) {
- return version;
- }
- }
- return AAIVersion.LATEST;
- }
-
- @Override
- public String getAuth() {
- return encryptedBasicAuth;
- }
-
- @Override
- public String getKey() {
- return encrytptionKey;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProvider.java
deleted file mode 100644
index f527b6cd97..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProvider.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.EsrVnfmList;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.GenericVnfs;
-import org.onap.aai.domain.yang.Vserver;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-
-/**
- * Provides methods for invoking REST calls to AAI.
- */
-public interface AaiServiceProvider {
-
- /**
- * Invoke a get request for a generic VNF.
- *
- * @param vnfId the VNF id
- * @return the generic VNF
- */
- GenericVnf invokeGetGenericVnf(final String vnfId);
-
- /**
- * Invoke a query for a generic VNF with the given selfLink
- *
- * @param selfLink the selfLink
- * @return the matching generic vnfs
- */
- GenericVnfs invokeQueryGenericVnf(final String selfLink);
-
- /**
- * Invoke a GET request for the VNFMs.
- *
- * @return the VNFMs
- */
- EsrVnfmList invokeGetVnfms();
-
- /**
- * Invoke a GET request for the esr system info list for a VNFM.
- *
- * @return the esr system info list for the VNFM
- */
- EsrSystemInfoList invokeGetVnfmEsrSystemInfoList(final String vnfmId);
-
- /**
- * Invoke a GET request for the a VNFM.
- *
- * @param vnfmId the ID of the VNFM
- * @return the VNFM
- */
- EsrVnfm invokeGetVnfm(final String vnfmId);
-
- /**
- * Invoke a PATCH request for a generic vnf.
- *
- * @param vnf the generic vnf
- * @return
- */
- void invokePatchGenericVnf(GenericVnf vnf);
-
- /**
- * Invoke a PUT request for a relationship from a generic vnf to a VNFM.
- *
- * @param vnf the generic vnf
- * @param vnfmId the ID of the VNFM
- * @return
- */
- void invokePutGenericVnfToVnfmRelationship(GenericVnf vnf, final String vnfmId);
-
-
- /**
- * Invoke a PUT request for a vserver.
- *
- * @param cloudOwner the cloud owner
- * @param cloudRegion the cloud region
- * @param tenantId the ID of the tenant
- * @param vserver the vserver
- * @return
- */
- void invokePutVserver(final String cloudOwner, final String cloudRegion, final String tenantId,
- final Vserver vserver);
-
- /**
- * Invoke a PUT request for a relationship from a vserver to a generic vnf.
- *
- * @param cloudOwner the cloud owner
- * @param cloudRegion the cloud region the vserver is deployed on
- * @param tenantId the ID of the tenant the vserver is deployed on
- * @param vserver the vserver
- * @param vnfId the ID of the generic vnf
- * @return
- */
- void invokePutVserverToVnfRelationship(final String cloudOwner, final String cloudRegion, final String tenantId,
- final Vserver vserver, final String vnfId);
-
- /**
- * Invoke a DELETE request for a vserver.
- *
- * @param cloudOwner the cloud owner
- * @param cloudRegion the cloud region
- * @param tenantId the ID of the tenant
- * @param vserverId the ID of the vserver
- * @return
- */
- void invokeDeleteVserver(final String cloudOwner, final String cloudRegion, final String tenantId,
- final String vserverId);
-
- /**
- * Invoke a GET request for the a tenant.
- *
- * @param cloudOwner the cloud owner
- * @param cloudRegion the cloud region
- * @param tenantId the ID of the tenant
- * @return the tenant
- */
- Tenant invokeGetTenant(final String cloudOwner, final String cloudRegion, final String tenantId);
-
- /**
- * Invoke a GET request for the esr system info list for a cloud region.
- *
- * @param cloudOwner the cloud owner
- * @param cloudRegion the cloud region
- * @return the esr system info list for the VNFM
- */
- EsrSystemInfoList invokeGetCloudRegionEsrSystemInfoList(final String cloudOwner, final String cloudRegion);
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProviderImpl.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProviderImpl.java
deleted file mode 100644
index 8f95d8ab85..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/AaiServiceProviderImpl.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.EsrVnfmList;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.GenericVnfs;
-import org.onap.aai.domain.yang.Vserver;
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
-import org.onap.aaiclient.client.graphinventory.entities.uri.Depth;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class AaiServiceProviderImpl implements AaiServiceProvider {
-
- private static final Logger logger = LoggerFactory.getLogger(AaiServiceProviderImpl.class);
- private final AaiClientProvider aaiClientProvider;
-
- @Autowired
- public AaiServiceProviderImpl(final AaiClientProvider aaiClientProvider) {
- this.aaiClientProvider = aaiClientProvider;
- }
-
- @Override
- public GenericVnf invokeGetGenericVnf(final String vnfId) {
- return aaiClientProvider.getAaiClient()
- .get(GenericVnf.class,
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)))
- .orElseGet(() -> {
- logger.debug("No vnf found in AAI with ID: {}", vnfId);
- return null;
- });
- }
-
- @Override
- public GenericVnfs invokeQueryGenericVnf(final String selfLink) {
- return aaiClientProvider.getAaiClient().get(GenericVnfs.class, AAIUriFactory
- .createResourceUri(AAIFluentTypeBuilder.network().genericVnfs()).queryParam("selflink", selfLink))
- .orElseGet(() -> {
- logger.debug("No vnf found in AAI with selflink: {}", selfLink);
- return null;
- });
- }
-
- @Override
- public EsrVnfmList invokeGetVnfms() {
- return aaiClientProvider.getAaiClient()
- .get(EsrVnfmList.class,
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.externalSystem().esrVnfmList()))
- .orElseGet(() -> {
- logger.debug("No VNFMs in AAI");
- return null;
- });
- }
-
- @Override
- public EsrVnfm invokeGetVnfm(final String vnfmId) {
- return aaiClientProvider.getAaiClient()
- .get(EsrVnfm.class, AAIUriFactory
- .createResourceUri(AAIFluentTypeBuilder.externalSystem().esrVnfm(vnfmId)).depth(Depth.ONE))
- .orElseGet(() -> {
- logger.debug("VNFM not found in AAI");
- return null;
- });
- }
-
- @Override
- public EsrSystemInfoList invokeGetVnfmEsrSystemInfoList(final String vnfmId) {
- return aaiClientProvider.getAaiClient()
- .get(EsrSystemInfoList.class,
- AAIUriFactory.createResourceUri(
- AAIFluentTypeBuilder.externalSystem().esrVnfm(vnfmId).esrSystemInfoList()))
- .orElseGet(() -> {
- logger.debug("VNFM ESR system info list not found in AAI");
- return null;
- });
- }
-
- @Override
- public void invokePatchGenericVnf(final GenericVnf vnf) {
- aaiClientProvider.getAaiClient().update(
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnf.getVnfId())), vnf);
- }
-
- @Override
- public void invokePutGenericVnfToVnfmRelationship(final GenericVnf vnf, final String vnfmId) {
- aaiClientProvider.getAaiClient().connect(
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.externalSystem().esrVnfm(vnfmId)),
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnf.getVnfId())));
- }
-
- @Override
- public void invokePutVserver(final String cloudOwner, final String cloudRegion, final String tenant,
- final Vserver vserver) {
- aaiClientProvider
- .getAaiClient().create(
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
- .cloudRegion(cloudOwner, cloudRegion).tenant(tenant).vserver(vserver.getVserverId())),
- vserver);
- }
-
- @Override
- public void invokePutVserverToVnfRelationship(final String cloudOwner, final String cloudRegion,
- final String tenant, final Vserver vserver, final String vnfId) {
- aaiClientProvider.getAaiClient().connect(
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
- .cloudRegion(cloudOwner, cloudRegion).tenant(tenant).vserver(vserver.getVserverId())),
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)));
- }
-
- @Override
- public void invokeDeleteVserver(final String cloudOwner, final String cloudRegion, final String tenant,
- final String vserverId) {
- aaiClientProvider.getAaiClient().delete(AAIUriFactory.createResourceUri(AAIFluentTypeBuilder
- .cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).tenant(tenant).vserver(vserverId)));
- }
-
- @Override
- public Tenant invokeGetTenant(final String cloudOwner, final String cloudRegion, final String tenantId) {
- return aaiClientProvider.getAaiClient().get(Tenant.class, AAIUriFactory.createResourceUri(
- AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).tenant(tenantId)))
- .orElseGet(() -> {
- logger.debug("Tenant not found in AAI");
- return null;
- });
- }
-
- @Override
- public EsrSystemInfoList invokeGetCloudRegionEsrSystemInfoList(final String cloudOwner, final String cloudRegion) {
- return aaiClientProvider
- .getAaiClient().get(EsrSystemInfoList.class, AAIUriFactory.createResourceUri(AAIFluentTypeBuilder
- .cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).esrSystemInfoList()))
- .orElseGet(() -> {
- logger.debug("Cloud esr system info list not found in AAI");
- return null;
- });
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/OamIpAddressSource.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/OamIpAddressSource.java
deleted file mode 100644
index b81925241c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/aai/OamIpAddressSource.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai;
-
-/**
- * Represents the source of the value to use as the AAI OAM IP address of a VNF
- */
-public class OamIpAddressSource {
-
- private final OamIpAddressType type;
- private final String value;
-
- public OamIpAddressSource(final OamIpAddressType type, final String value) {
- this.type = type;
- this.value = value;
- }
-
- public OamIpAddressType getType() {
- return type;
- }
-
- public String getValue() {
- return value;
- }
-
- public enum OamIpAddressType {
- /**
- * The value passed in {@link OamIpAddress#OamIpAddress(OamIpAddressType, String)} is to be used directly as the
- * OAM IP address
- */
- LITERAL,
- /**
- * The OAM IP address is to be retrieved from the vnfConfigurableProperties returned from the VNFM using the
- * value passed in {@link OamIpAddress#OamIpAddress(OamIpAddressType, String)} as the name of a property
- */
- CONFIGURABLE_PROPERTY
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/AccessInfo.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/AccessInfo.java
deleted file mode 100644
index 139df248d4..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/AccessInfo.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model;
-
-import java.util.Objects;
-
-public class AccessInfo {
-
- protected String projectId;
- protected String projectName;
- protected String domainName;
- protected VimCredentials credentials;
-
- public String getProjectId() {
- return projectId;
- }
-
- public void setProjectId(final String value) {
- projectId = value;
- }
-
- public String getProjectName() {
- return projectName;
- }
-
- public void setProjectName(final String value) {
- projectName = value;
- }
-
- public String getDomainName() {
- return domainName;
- }
-
- public void setDomainName(final String value) {
- domainName = value;
- }
-
- public VimCredentials getCredentials() {
- return credentials;
- }
-
- public void setCredentials(final VimCredentials value) {
- credentials = value;
- }
-
- @Override
- public boolean equals(final java.lang.Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- final AccessInfo accessInfo = (AccessInfo) o;
- return Objects.equals(this.projectId, accessInfo.projectId)
- && Objects.equals(this.projectName, accessInfo.projectName)
- && Objects.equals(this.domainName, accessInfo.domainName)
- && Objects.equals(this.credentials, accessInfo.credentials);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(projectId, projectName, domainName, credentials);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class AccessInfo {\n");
-
- sb.append(" projectId: ").append(toIndentedString(projectId)).append("\n");
- sb.append(" projectName: ").append(toIndentedString(projectName)).append("\n");
- sb.append(" domainName: ").append(toIndentedString(domainName)).append("\n");
- sb.append(" credentials: ").append(toIndentedString(credentials)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-
- /**
- * Convert the given object to string with each line indented by 4 spaces (except the first line).
- */
- private String toIndentedString(final java.lang.Object o) {
- if (o == null) {
- return "null";
- }
- return o.toString().replace("\n", "\n ");
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/InterfaceInfo.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/InterfaceInfo.java
deleted file mode 100644
index 9d4355a0c4..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/InterfaceInfo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model;
-
-import java.util.Objects;
-
-public class InterfaceInfo {
-
- protected String identityEndPoint;
-
- public String getIdentityEndPoint() {
- return identityEndPoint;
- }
-
- public void setIdentityEndPoint(final String value) {
- identityEndPoint = value;
- }
-
- @Override
- public boolean equals(final java.lang.Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- final InterfaceInfo interfaceInfo = (InterfaceInfo) o;
- return Objects.equals(this.identityEndPoint, interfaceInfo.identityEndPoint);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(identityEndPoint);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class InterfaceInfo {\n");
-
- sb.append(" identityEndPoint: ").append(toIndentedString(identityEndPoint)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-
- /**
- * Convert the given object to string with each line indented by 4 spaces (except the first line).
- */
- private String toIndentedString(final java.lang.Object o) {
- if (o == null) {
- return "null";
- }
- return o.toString().replace("\n", "\n ");
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/VimCredentials.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/VimCredentials.java
deleted file mode 100644
index fd1a9078bb..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vim/model/VimCredentials.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model;
-
-import java.util.Objects;
-
-public class VimCredentials {
-
- protected String username;
-
- protected String password;
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(final String value) {
- username = value;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(final String password) {
- this.password = password;
- }
-
- @Override
- public boolean equals(final java.lang.Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- final VimCredentials vimCredentials = (VimCredentials) o;
- return Objects.equals(this.username, vimCredentials.username)
- && Objects.equals(this.password, vimCredentials.password);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(username, password);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class AccessInfo {\n");
-
- sb.append(" username: ").append(toIndentedString(username)).append("\n");
- sb.append(" password: ").append(toIndentedString(password)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-
- /**
- * Convert the given object to string with each line indented by 4 spaces (except the first line).
- */
- private String toIndentedString(final java.lang.Object o) {
- if (o == null) {
- return "null";
- }
- return o.toString().replace("\n", "\n ");
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmHelper.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmHelper.java
deleted file mode 100644
index 9155261bd2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmHelper.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model.AccessInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model.InterfaceInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model.VimCredentials;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InstantiateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.LccnSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsAuthenticationParamsBasic;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsAuthenticationParamsOauth2ClientCredentials;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsFilter;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsFilter.NotificationTypesEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.SubscriptionsFilterVnfInstanceSubscriptionFilter;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.VnfInstancesvnfInstanceIdinstantiateExtVirtualLinks;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201VimConnections;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.ExternalVirtualLink;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-
-/**
- * Provides helper methods for interactions with VNFM.
- */
-@Service
-public class VnfmHelper {
-
- private static final Logger logger = LoggerFactory.getLogger(VnfmHelper.class);
- private static final String SEPARATOR = "_";
- private final AaiServiceProvider aaiServiceProvider;
- private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
-
- @Autowired
- public VnfmHelper(final AaiServiceProvider aaiServiceProvider,
- final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- this.aaiServiceProvider = aaiServiceProvider;
- this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
- }
-
- /**
- * Create an {@link InstantiateVnfRequest} to send in an instantiation request to a VNFM.
- *
- * @param tenant the tenant the request is to be fulfilled on
- * @param createVnfRequest the request received by the VNFM adapter
- */
- public InstantiateVnfRequest createInstantiateRequest(final Tenant tenant, final CreateVnfRequest createVnfRequest,
- final String flavourId) {
- final InstantiateVnfRequest instantiateVnfRequest = new InstantiateVnfRequest();
- instantiateVnfRequest.setFlavourId(flavourId);
- instantiateVnfRequest.setVimConnectionInfo(getVimConnectionInfos(tenant));
- instantiateVnfRequest
- .setAdditionalParams(getAdditionalParametersAsJsonObject(createVnfRequest.getAdditionalParams()));
- instantiateVnfRequest.setExtVirtualLinks(getExternalVirtualLinks(createVnfRequest.getExternalVirtualLinks()));
- createVnfRequest.getExternalVirtualLinks();
- return instantiateVnfRequest;
- }
-
- private List<VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo> getVimConnectionInfos(final Tenant tenant) {
- final List<VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo> connectionInfos = new ArrayList<>();
- connectionInfos.add(getVimConnectionInfo(tenant));
- return connectionInfos;
- }
-
- private VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo getVimConnectionInfo(final Tenant tenant) {
- final EsrSystemInfo esrSystemInfo =
- aaiServiceProvider.invokeGetCloudRegionEsrSystemInfoList(tenant.getCloudOwner(), tenant.getRegionName())
- .getEsrSystemInfo().iterator().next();
-
- final VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo vnfInstancesVimConnectionInfo =
- new VnfInstancesvnfInstanceIdinstantiateVimConnectionInfo();
- final String vimId = createVimId(tenant.getCloudOwner(), tenant.getRegionName());
- vnfInstancesVimConnectionInfo.setId(vimId);
- vnfInstancesVimConnectionInfo.setVimId(vimId);
- vnfInstancesVimConnectionInfo.setVimType(esrSystemInfo.getType());
- vnfInstancesVimConnectionInfo.setInterfaceInfo(getInterfaceInfo(esrSystemInfo.getServiceUrl()));
- vnfInstancesVimConnectionInfo.setAccessInfo(getAccessInfo(esrSystemInfo, tenant.getTenantId()));
- return vnfInstancesVimConnectionInfo;
- }
-
- private InterfaceInfo getInterfaceInfo(final String url) {
- final InterfaceInfo interfaceInfo = new InterfaceInfo();
- interfaceInfo.setIdentityEndPoint(url);
- return interfaceInfo;
- }
-
- private AccessInfo getAccessInfo(final EsrSystemInfo esrSystemInfo, final String tenantId) {
- final AccessInfo accessInfo = new AccessInfo();
- accessInfo.setProjectId(tenantId);
- accessInfo.setDomainName(esrSystemInfo.getCloudDomain());
-
- final VimCredentials vimCredentials = new VimCredentials();
- vimCredentials.setUsername(esrSystemInfo.getUserName());
- vimCredentials.setPassword(esrSystemInfo.getPassword());
- accessInfo.setCredentials(vimCredentials);
- return accessInfo;
- }
-
- private String createVimId(final String cloudOwner, final String cloudRegion) {
- return cloudOwner + SEPARATOR + cloudRegion;
- }
-
- private JsonObject getAdditionalParametersAsJsonObject(final Map<String, String> additionalParameters) {
- final JsonObject additionalParametersJsonObject = new JsonObject();
- if (additionalParameters != null) {
- for (final Map.Entry<String, JsonElement> item : new Gson().toJsonTree(additionalParameters)
- .getAsJsonObject().entrySet()) {
- additionalParametersJsonObject.add(item.getKey(), item.getValue());
- }
- } else {
- logger.warn("No additional parameters were specified for the operation");
- }
- return additionalParametersJsonObject;
- }
-
- private List<VnfInstancesvnfInstanceIdinstantiateExtVirtualLinks> getExternalVirtualLinks(
- final List<ExternalVirtualLink> extVirtualLinks) {
- if (extVirtualLinks != null) {
- final String extVirtualLinksJsonObject =
- new Gson().toJson(extVirtualLinks, new TypeToken<List<ExternalVirtualLink>>() {}.getType());
- return new Gson().fromJson(extVirtualLinksJsonObject,
- new TypeToken<List<VnfInstancesvnfInstanceIdinstantiateExtVirtualLinks>>() {}.getType());
- }
- return null;
- }
-
- /**
- * Create a {@link LccnSubscriptionRequest} to send in an notification subscription request to a VNFM.
- *
- * @param the ID of the VNF notifications are required for
- * @return the request
- * @throws GeneralSecurityException
- */
- public LccnSubscriptionRequest createNotificationSubscriptionRequest(final String vnfId)
- throws GeneralSecurityException {
- final LccnSubscriptionRequest lccnSubscriptionRequest = new LccnSubscriptionRequest();
- lccnSubscriptionRequest.setAuthentication(getSubscriptionsAuthentication());
- lccnSubscriptionRequest.setCallbackUri(vnfmAdapterUrlProvider.getVnfLcmOperationOccurrenceNotificationUrl());
- final SubscriptionsFilter filter = new SubscriptionsFilter();
- filter.addNotificationTypesItem(NotificationTypesEnum.VNFLCMOPERATIONOCCURRENCENOTIFICATION);
- final SubscriptionsFilterVnfInstanceSubscriptionFilter vnfInstanceSubscriptionFilter =
- new SubscriptionsFilterVnfInstanceSubscriptionFilter();
- vnfInstanceSubscriptionFilter.addVnfInstanceIdsItem(vnfId);
- filter.setVnfInstanceSubscriptionFilter(vnfInstanceSubscriptionFilter);
- lccnSubscriptionRequest.setFilter(filter);
- return lccnSubscriptionRequest;
- }
-
- private SubscriptionsAuthentication getSubscriptionsAuthentication() throws GeneralSecurityException {
- final SubscriptionsAuthentication authentication = new SubscriptionsAuthentication();
-
- final ImmutablePair<String, String> decrypedAuth = vnfmAdapterUrlProvider.getDecryptAuth();
-
- final SubscriptionsAuthenticationParamsOauth2ClientCredentials oauthParams =
- new SubscriptionsAuthenticationParamsOauth2ClientCredentials();
- oauthParams.setTokenEndpoint(vnfmAdapterUrlProvider.getOauthTokenUrl());
- oauthParams.clientId(decrypedAuth.getLeft());
- oauthParams.setClientPassword(decrypedAuth.getRight());
- authentication.addAuthTypeItem(AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS);
- authentication.paramsOauth2ClientCredentials(oauthParams);
-
- final SubscriptionsAuthenticationParamsBasic basicAuthParams = new SubscriptionsAuthenticationParamsBasic();
- basicAuthParams.setUserName(decrypedAuth.getLeft());
- basicAuthParams.setPassword(decrypedAuth.getRight());
- authentication.addAuthTypeItem(AuthTypeEnum.BASIC);
- authentication.paramsBasic(basicAuthParams);
-
- authentication.addAuthTypeItem(AuthTypeEnum.TLS_CERT);
- return authentication;
- }
-
- /**
- * Get the VIM connections for a tenant
- *
- * @param tenant the tenant
- * @return the VIM connections
- */
- public InlineResponse201VimConnections getVimConnections(final Tenant tenant) {
- final EsrSystemInfo esrSystemInfo =
- aaiServiceProvider.invokeGetCloudRegionEsrSystemInfoList(tenant.getCloudOwner(), tenant.getRegionName())
- .getEsrSystemInfo().iterator().next();
-
- final InlineResponse201VimConnections vimConnection = new InlineResponse201VimConnections();
- vimConnection.setId(createVimId(tenant.getCloudOwner(), tenant.getRegionName()));
- vimConnection.setVimId(vimConnection.getId());
- vimConnection.setVimType(esrSystemInfo.getType());
- vimConnection.setInterfaceInfo(getInterfaceInfo(esrSystemInfo.getServiceUrl()));
- vimConnection.setAccessInfo(getAccessInfo(esrSystemInfo, tenant.getTenantId()));
- return vimConnection;
- }
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmRestTemplateConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmRestTemplateConfiguration.java
deleted file mode 100644
index 2c7ddd1d49..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmRestTemplateConfiguration.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import org.onap.logging.filter.spring.SpringClientPayloadFilter;
-import org.onap.so.configuration.rest.HttpComponentsClientConfiguration;
-import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class VnfmRestTemplateConfiguration {
-
- public static final String SOL003_LCM_REST_TEMPLATE = "Sol003LcmRestTemplate";
-
- @Autowired
- private HttpComponentsClientConfiguration httpComponentsClientConfiguration;
-
- @Bean
- @Qualifier(SOL003_LCM_REST_TEMPLATE)
- public RestTemplate sol003LcmRestTemplate() {
- final HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
- httpComponentsClientConfiguration.httpComponentsClientHttpRequestFactory();
- final RestTemplate restTemplate =
- new RestTemplate(new BufferingClientHttpRequestFactory(clientHttpRequestFactory));
- restTemplate.getInterceptors().add(new SOSpringClientFilter());
- restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
- return restTemplate;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProvider.java
deleted file mode 100644
index a6c6740235..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InstantiateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.LccnSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.TerminateVnfRequest;
-import com.google.common.base.Optional;
-
-/**
- * Provides methods for invoking REST calls to a VNFM.
- */
-public interface VnfmServiceProvider {
-
- /**
- * Invoke a get request for a VNF.
- *
- * @param vnfm the VNFM in AAI
- * @param vnfSelfLink the link to the VNF in the VNFM
- * @return the VNF from the VNFM
- */
- Optional<InlineResponse201> getVnf(final EsrVnfm vnfm, final String vnfSelfLink);
-
- /**
- * Invoke an instantiate request for a VNF.
- *
- * @param vnfm the VNFM in AAI
- * @param vnfSelfLink the link to he VNF on the VNFM
- * @param instantiateVnfRequest the instantiate request
- * @return the operation ID of the instantiation operation
- */
- String instantiateVnf(final EsrVnfm vnfm, final String vnfSelfLink,
- final InstantiateVnfRequest instantiateVnfRequest);
-
- /**
- * Invoke a notification subscription request to a VNFM.
- *
- * @param vnfm the VNFM in AAI
- * @param subscriptionRequest
- * @return the response to the subscription request
- */
- InlineResponse2001 subscribeForNotifications(final EsrVnfm vnfm, final LccnSubscriptionRequest subscriptionRequest);
-
- /**
- * Invoke a terminate request for a VNF.
- *
- * @param vnfm the VNFM in AAI
- * @param vnfSelfLink the link to he VNF on the VNFM
- * @param terminateVnfRequest the terminate request
- * @return the operation ID of the termination operation
- */
- String terminateVnf(final EsrVnfm vnfm, final String vnfSelfLink, final TerminateVnfRequest terminateVnfRequest);
-
- /**
- * Invoke a delete request for a VNF.
- *
- * @param vnfm the VNFM in AAI
- * @param vnfSelfLink the link to he VNF on the VNFM
- * @return the operation ID of the instantiation operation
- */
- void deleteVnf(final EsrVnfm vnfm, final String vnfSelfLink);
-
- /**
- * Invoke a get request for a VNFM operation.
- *
- * @param vnfm the VNFM in AAI
- * @param operationId the id of the operation on the VNFM
- * @return the operation from the VNFM
- */
- Optional<InlineResponse200> getOperation(final EsrVnfm vnfm, final String operationId);
-
- /**
- * Invoke a create request to a VNFM
- *
- * @param vnfm the VNFM in AAI
- * @param createVnfRequest the parameters for creating a VNF
- * @return the newly created VNF
- */
- Optional<InlineResponse201> createVnf(final EsrVnfm vnfm, final CreateVnfRequest createVnfRequest);
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java
deleted file mode 100644
index 1ed3ec9ff2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.net.ssl.SSLContext;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.JSON;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.security.oauth2.client.OAuth2RestTemplate;
-import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * Configures the HttpRestServiceProvider for REST call to a VNFM.
- */
-@Configuration
-public class VnfmServiceProviderConfiguration extends AbstractServiceProviderConfiguration {
-
- private static final Logger logger = LoggerFactory.getLogger(VnfmServiceProviderConfiguration.class);
- private final Map<String, HttpRestServiceProvider> mapOfVnfmIdToHttpRestServiceProvider = new ConcurrentHashMap<>();
-
- @Value("${http.client.ssl.trust-store:#{null}}")
- private Resource trustStore;
- @Value("${http.client.ssl.trust-store-password:#{null}}")
- private String trustStorePassword;
-
- @Value("${server.ssl.key-store:#{null}}")
- private Resource keyStoreResource;
- @Value("${server.ssl.key--store-password:#{null}}")
- private String keyStorePassword;
-
- /**
- * This property is only intended to be temporary until the AAI schema is updated to support setting the endpoint
- */
- @Value("${vnfmadapter.temp.vnfm.oauth.endpoint:#{null}}")
- private String oauthEndpoint;
-
- @Qualifier(VnfmRestTemplateConfiguration.SOL003_LCM_REST_TEMPLATE)
- @Autowired
- private RestTemplate defaultRestTemplate;
-
- public HttpRestServiceProvider getHttpRestServiceProvider(final EsrVnfm vnfm) {
- if (!mapOfVnfmIdToHttpRestServiceProvider.containsKey(vnfm.getVnfmId())) {
- mapOfVnfmIdToHttpRestServiceProvider.put(vnfm.getVnfmId(), createHttpRestServiceProvider(vnfm));
- }
- return mapOfVnfmIdToHttpRestServiceProvider.get(vnfm.getVnfmId());
- }
-
- private HttpRestServiceProvider createHttpRestServiceProvider(final EsrVnfm vnfm) {
- final RestTemplate restTemplate = createRestTemplate(vnfm);
- setGsonMessageConverter(restTemplate);
- if (trustStore != null) {
- setTrustStore(restTemplate);
- }
- return new HttpRestServiceProviderImpl(restTemplate, new BasicHttpHeadersProvider().getHttpHeaders());
- }
-
- private RestTemplate createRestTemplate(final EsrVnfm vnfm) {
- if (vnfm != null) {
- for (final EsrSystemInfo esrSystemInfo : vnfm.getEsrSystemInfoList().getEsrSystemInfo()) {
- if (!StringUtils.isEmpty(esrSystemInfo.getUserName())
- && !StringUtils.isEmpty(esrSystemInfo.getPassword())) {
- return createOAuth2RestTemplate(esrSystemInfo);
- }
- }
- }
- return defaultRestTemplate;
- }
-
- private OAuth2RestTemplate createOAuth2RestTemplate(final EsrSystemInfo esrSystemInfo) {
- logger.debug("Getting OAuth2RestTemplate ...");
- final ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
- resourceDetails.setId(UUID.randomUUID().toString());
- resourceDetails.setClientId(esrSystemInfo.getUserName());
- resourceDetails.setClientSecret(esrSystemInfo.getPassword());
- resourceDetails.setAccessTokenUri(
- oauthEndpoint == null ? esrSystemInfo.getServiceUrl().replace("vnflcm/v1", "oauth/token")
- : oauthEndpoint);
- resourceDetails.setGrantType("client_credentials");
- return new OAuth2RestTemplate(resourceDetails);
- }
-
- private void setTrustStore(final RestTemplate restTemplate) {
- SSLContext sslContext;
- try {
- if (keyStoreResource != null) {
- final KeyStore keystore = KeyStore.getInstance("pkcs12");
- keystore.load(keyStoreResource.getInputStream(), keyStorePassword.toCharArray());
- sslContext =
- new SSLContextBuilder().loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray())
- .loadKeyMaterial(keystore, keyStorePassword.toCharArray()).build();
- } else {
- sslContext = new SSLContextBuilder()
- .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray()).build();
- }
- logger.info("Setting truststore: {}", trustStore.getURL());
- final SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
- final HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
- final HttpComponentsClientHttpRequestFactory factory =
- new HttpComponentsClientHttpRequestFactory(httpClient);
- restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(factory));
- } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException | CertificateException
- | IOException | UnrecoverableKeyException exception) {
- logger.error("Error reading truststore, TLS connection to VNFM will fail.", exception);
- }
- }
-
- @Override
- protected Gson getGson() {
- return new JSON().getGson();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderImpl.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderImpl.java
deleted file mode 100644
index 6e0978a106..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderImpl.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201.InstantiationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InstantiateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.LccnSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.TerminateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement.JobManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmRequestFailureException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import com.google.common.base.Optional;
-import java.util.List;
-
-@Service
-public class VnfmServiceProviderImpl implements VnfmServiceProvider {
- private static final Logger logger = LoggerFactory.getLogger(VnfmServiceProviderImpl.class);
- private static final String MESSAGE_RESULTED_IN_EXCEPTION = " resulted in exception";
- private static final String MESSAGE_REQUEST = ", request: ";
- private static final String MESSAGE_TERMINATE_REQUEST_TO = "Terminate request to ";
-
- private final VnfmServiceProviderConfiguration vnfmServiceProviderConfiguration;
- private final VnfmUrlProvider urlProvider;
-
- @Autowired
- public VnfmServiceProviderImpl(final VnfmUrlProvider urlProvider,
- final VnfmServiceProviderConfiguration vnfmServiceProviderConfiguration) {
- this.vnfmServiceProviderConfiguration = vnfmServiceProviderConfiguration;
- this.urlProvider = urlProvider;
- }
-
- @Override
- public Optional<InlineResponse201> getVnf(final EsrVnfm vnfm, final String vnfSelfLink) {
- return getHttpServiceProvider(vnfm).get(vnfSelfLink, InlineResponse201.class);
- }
-
- @Override
- public String instantiateVnf(final EsrVnfm vnfm, final String vnfSelfLink,
- final InstantiateVnfRequest instantiateVnfRequest) {
- logger.debug("Sending instantiate request {} to : {}", instantiateVnfRequest, vnfSelfLink);
- ResponseEntity<Void> response = null;
- try {
- response = getHttpServiceProvider(vnfm).postHttpRequest(instantiateVnfRequest, vnfSelfLink + "/instantiate",
- Void.class);
- } catch (final Exception exception) {
- final String errorMessage =
- "Instantiate request to " + vnfSelfLink + MESSAGE_RESULTED_IN_EXCEPTION + instantiateVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage, exception);
- }
- if (response.getStatusCode() != HttpStatus.ACCEPTED) {
- final String errorMessage = "Instantiate request to " + vnfSelfLink + " returned status code: "
- + response.getStatusCode() + MESSAGE_REQUEST + instantiateVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage);
- }
- String locationHeader = getLocationHeader(response);
- return locationHeader.substring(locationHeader.lastIndexOf("/") + 1);
- }
-
- @Override
- public InlineResponse2001 subscribeForNotifications(final EsrVnfm vnfm,
- final LccnSubscriptionRequest subscriptionRequest) {
- logger.info("Subscribing for notifications {}", subscriptionRequest);
- final String url = urlProvider.getSubscriptionsUrl(vnfm.getVnfmId());
- ResponseEntity<InlineResponse2001> response = null;
- try {
- response = getHttpServiceProvider(vnfm).postHttpRequest(subscriptionRequest, url, InlineResponse2001.class);
- logger.info("Subscribing for notifications response {}", response);
- } catch (final Exception exception) {
- final String errorMessage =
- "Subscription to VNFM " + vnfm.getVnfmId() + MESSAGE_RESULTED_IN_EXCEPTION + subscriptionRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage, exception);
- }
- if (response.getStatusCode() != HttpStatus.CREATED) {
- final String errorMessage = "Subscription to VNFM " + vnfm.getVnfmId() + " returned status code: "
- + response.getStatusCode() + MESSAGE_REQUEST + subscriptionRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage);
- }
- return response.getBody();
- }
-
- @Override
- public String terminateVnf(final EsrVnfm vnfm, final String vnfSelfLink,
- final TerminateVnfRequest terminateVnfRequest) {
- logger.debug("Sending terminate request {} to : {}", terminateVnfRequest, vnfSelfLink);
- ResponseEntity<Void> response = null;
- try {
- response = getHttpServiceProvider(vnfm).postHttpRequest(terminateVnfRequest, vnfSelfLink + "/terminate",
- Void.class);
- } catch (final RestProcessingException restProcessingException) {
- if (restProcessingException.getStatusCode() == HttpStatus.CONFLICT.value()) {
- final InlineResponse201 vnf = getVnf(vnfm, vnfSelfLink).get();
- if (vnf.getInstantiationState().equals(InstantiationStateEnum.NOT_INSTANTIATED)) {
- return JobManager.ALREADY_COMPLETED_OPERATION_ID;
- } else {
- final String errorMessage = MESSAGE_TERMINATE_REQUEST_TO + vnfSelfLink
- + MESSAGE_RESULTED_IN_EXCEPTION + terminateVnfRequest;
- logger.error(errorMessage, restProcessingException);
- throw new VnfmRequestFailureException(errorMessage, restProcessingException);
- }
- }
- } catch (final Exception exception) {
- final String errorMessage =
- MESSAGE_TERMINATE_REQUEST_TO + vnfSelfLink + MESSAGE_RESULTED_IN_EXCEPTION + terminateVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage, exception);
- }
- checkIfResponseIsAcceptable(response, vnfSelfLink, terminateVnfRequest);
- String locationHeader = getLocationHeader(response);
- return locationHeader.substring(locationHeader.lastIndexOf("/") + 1);
- }
-
- @Override
- public void deleteVnf(final EsrVnfm vnfm, final String vnfSelfLink) {
- logger.debug("Sending delete request to : {}", vnfSelfLink);
- final ResponseEntity<Void> response = getHttpServiceProvider(vnfm).deleteHttpRequest(vnfSelfLink, Void.class);
- if (response.getStatusCode() != HttpStatus.NO_CONTENT) {
- throw new VnfmRequestFailureException(
- "Delete request to " + vnfSelfLink + " return status code: " + response.getStatusCode());
- }
- }
-
- @Override
- public Optional<InlineResponse200> getOperation(final EsrVnfm vnfm, final String operationId) {
- final String url = urlProvider.getOperationUrl(vnfm.getVnfmId(), operationId);
- return getHttpServiceProvider(vnfm).get(url, InlineResponse200.class);
- }
-
- @Override
- public Optional<InlineResponse201> createVnf(final EsrVnfm vnfm, final CreateVnfRequest createVnfRequest) {
- final String url = urlProvider.getCreationUrl(vnfm.getVnfmId());
- logger.debug("Sending create request {} to : {}", createVnfRequest, url);
- try {
- return getHttpServiceProvider(vnfm).post(createVnfRequest, url, InlineResponse201.class);
- } catch (final Exception exception) {
- final String errorMessage =
- "Create request to vnfm:" + vnfm.getVnfmId() + MESSAGE_RESULTED_IN_EXCEPTION + createVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage, exception);
- }
- }
-
- private void checkIfResponseIsAcceptable(final ResponseEntity<Void> response, final String vnfSelfLink,
- final TerminateVnfRequest terminateVnfRequest) {
- if (response == null) {
- final String errorMessage = MESSAGE_TERMINATE_REQUEST_TO + vnfSelfLink + ", response is null, "
- + "request: " + terminateVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage);
- }
- if (response.getStatusCode() != HttpStatus.ACCEPTED) {
- final String errorMessage = MESSAGE_TERMINATE_REQUEST_TO + vnfSelfLink + ", returned status code: "
- + response.getStatusCode() + MESSAGE_REQUEST + terminateVnfRequest;
- logger.error(errorMessage);
- throw new VnfmRequestFailureException(errorMessage);
- }
- }
-
- private HttpRestServiceProvider getHttpServiceProvider(final EsrVnfm vnfm) {
- return vnfmServiceProviderConfiguration.getHttpRestServiceProvider(vnfm);
- }
-
- private String getLocationHeader(ResponseEntity<Void> response) {
- List<String> headers = response.getHeaders().get("Location");
- if ((headers == null) || (headers.isEmpty())) {
- throw new VnfmRequestFailureException("No headers found in response");
- }
- return headers.iterator().next();
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmUrlProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmUrlProvider.java
deleted file mode 100644
index a9319c07fe..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmUrlProvider.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmNotFoundException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.web.util.UriComponentsBuilder;
-
-/**
- * Provides URLs for REST calls to a VNFM.
- */
-@Service
-public class VnfmUrlProvider {
-
- private static Logger logger = getLogger(VnfmUrlProvider.class);
- private final AaiServiceProvider aaiServiceProvider;
-
- @Autowired
- public VnfmUrlProvider(final AaiServiceProvider aaiServiceProvider) {
- this.aaiServiceProvider = aaiServiceProvider;
- }
-
- /**
- * Get the URL for an operation on a VNFM.
- *
- * @param vnfmId The ID of the VNFM
- * @return the URL of the operation
- */
- public String getOperationUrl(final String vnfmId, final String operationId) {
- final String url = UriComponentsBuilder.fromUri(getBaseUri(vnfmId)).pathSegment("vnf_lcm_op_occs")
- .pathSegment(operationId).build().toString();
- logger.debug("getOperationUrl:" + url);
-
- return url;
- }
-
- /**
- * Get the URL for the subscriptions on a VNFM.
- *
- * @param vnfmId The ID of the VNFM
- * @return the URL of the subscriptions
- */
- public String getSubscriptionsUrl(final String vnfmId) {
- final String url =
- UriComponentsBuilder.fromUri(getBaseUri(vnfmId)).pathSegment("subscriptions").build().toString();
- logger.debug("getSubscriptionUrl:" + url);
-
- return url;
- }
-
- public String getCreationUrl(final String vnfmId) {
- final String url =
- UriComponentsBuilder.fromUri(getBaseUri(vnfmId)).pathSegment("vnf_instances").build().toString();
- logger.debug("getCreationUrl:" + url);
-
- return url;
- }
-
- private URI getBaseUri(final String vnfmId) {
- final EsrSystemInfoList vnfmEsrSystemInfoList = aaiServiceProvider.invokeGetVnfmEsrSystemInfoList(vnfmId);
-
- if (vnfmEsrSystemInfoList != null) {
- for (final EsrSystemInfo esrSystemInfo : vnfmEsrSystemInfoList.getEsrSystemInfo()) {
- return UriComponentsBuilder.fromHttpUrl(esrSystemInfo.getServiceUrl()).build().toUri();
- }
- }
-
- throw new VnfmNotFoundException("VNFM, or Service URL for VNFM, not found for VNFM " + vnfmId);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/JobManager.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/JobManager.java
deleted file mode 100644
index 5ac0179176..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/JobManager.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.Map;
-import java.util.UUID;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.JobNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.google.common.base.Optional;
-import com.google.common.collect.Maps;
-
-/**
- * Manages jobs enabling the status of jobs to be queried. A job is associated with an operation on a VNFM.
- */
-@Component
-public class JobManager {
- public static final String ALREADY_COMPLETED_OPERATION_ID = "alreadyCompleted";
- private static final String SEPARATOR = "_";
- private static Logger logger = getLogger(JobManager.class);
- private final Map<String, VnfmOperation> mapOfJobIdToVnfmOperation = Maps.newConcurrentMap();
- private final VnfmServiceProvider vnfmServiceProvider;
- private final AaiServiceProvider aaiServiceProvider;
-
- @Autowired
- JobManager(final VnfmServiceProvider vnfmServiceProvider, final AaiServiceProvider aaiServiceProvider) {
- this.vnfmServiceProvider = vnfmServiceProvider;
- this.aaiServiceProvider = aaiServiceProvider;
- }
-
- /**
- * Create a job associated with an operation on a VNFM.
- *
- * @param vnfmId the VNFM the operation relates to
- * @param operationId the ID of the associated VNFM operation
- * @param waitForNotificationForSuccess if set to <code>true</code> the {@link QueryJobResponse#getOperationState()}
- * shall not return {@link org.onap.vnfmadapter.v1.model.OperationStateEnum#COMPLETED} unless a required
- * notification has been processed
- * @return the ID of the job. Can be used to query the job using {@link #getVnfmOperation(String)}
- */
- public String createJob(final String vnfmId, final String operationId,
- final boolean waitForNotificationForSuccess) {
- final String jobId = vnfmId + SEPARATOR + UUID.randomUUID().toString();
- final VnfmOperation vnfmOperation = new VnfmOperation(vnfmId, operationId, waitForNotificationForSuccess);
- mapOfJobIdToVnfmOperation.put(jobId, vnfmOperation);
- return jobId;
- }
-
- /**
- * Get the operation, associated with the given job ID, from the VNFM.
- *
- * @param jobId the job ID
- * @return the associated operation from the VNFM, or <code>null</code> of no operation is associated with the given
- * job ID
- */
- public QueryJobResponse getVnfmOperation(final String jobId) {
- final VnfmOperation vnfmOperation = mapOfJobIdToVnfmOperation.get(jobId);
- final QueryJobResponse response = new QueryJobResponse();
-
- if (vnfmOperation == null) {
- throw new JobNotFoundException("No job found with ID: " + jobId);
- }
-
- if (vnfmOperation.getOperationId().equals(ALREADY_COMPLETED_OPERATION_ID)) {
- response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
- return response.operationState(OperationStateEnum.COMPLETED);
- }
-
- if (vnfmOperation.isVnfDeleted()) {
- response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
- return response.operationState(getOperationState(vnfmOperation, null));
- }
-
- try {
- final Optional<InlineResponse200> operationOptional = vnfmServiceProvider.getOperation(
- aaiServiceProvider.invokeGetVnfm(vnfmOperation.getVnfmId()), vnfmOperation.getOperationId());
-
- if (!operationOptional.isPresent()) {
- return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.OPERATION_NOT_FOUND);
- }
- final InlineResponse200 operation = operationOptional.get();
-
- logger.debug("Job Id: {} operationId: {} operation details: {} ", jobId, operation.getId(), operation);
-
- if (operation.getOperationState() == null) {
- return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
- }
-
- response.setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
- response.setId(operation.getId());
- response.setOperation(OperationEnum.fromValue(operation.getOperation().getValue()));
- response.setOperationState(getOperationState(vnfmOperation, operation));
- response.setStartTime(operation.getStartTime());
- response.setStateEnteredTime(operation.getStateEnteredTime());
- response.setVnfInstanceId(operation.getVnfInstanceId());
-
- return response;
- } catch (final HttpResouceNotFoundException exception) {
- logger.error("Exception encountered trying to get operation status for operation id "
- + vnfmOperation.getOperationId(), exception);
- return response.operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
- }
- }
-
- private OperationStateEnum getOperationState(final VnfmOperation vnfmOperation,
- final InlineResponse200 operationResponse) {
- switch (vnfmOperation.getNotificationStatus()) {
- case NOTIFICATION_PROCESSING_PENDING:
- return org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.PROCESSING;
- case NOTIFICATION_PROCEESING_SUCCESSFUL:
- return org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.COMPLETED;
- case NOTIFICATION_PROCESSING_FAILED:
- return org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.FAILED;
- default:
- if (operationResponse == null || operationResponse.getOperationState() == null)
- return null;
- return OperationStateEnum.fromValue(operationResponse.getOperationState().getValue());
- }
- }
-
- public void notificationProcessedForOperation(final String operationId,
- final boolean notificationProcessingWasSuccessful) {
- logger.debug("Notification processed for operation ID {} success?: {}", operationId,
- notificationProcessingWasSuccessful);
- final java.util.Optional<VnfmOperation> relatedOperation = mapOfJobIdToVnfmOperation.values().stream()
- .filter(operation -> operation.getOperationId().equals(operationId)).findFirst();
- if (relatedOperation.isPresent()) {
- relatedOperation.get().setNotificationProcessed(notificationProcessingWasSuccessful);
- } else {
- logger.debug("No operation found for operation ID {} ", operationId);
-
- }
- }
-
- public void vnfDeleted(final String operationId) {
- logger.debug("VNF deleyed for operation ID {}", operationId);
- final java.util.Optional<VnfmOperation> relatedOperation = mapOfJobIdToVnfmOperation.values().stream()
- .filter(operation -> operation.getOperationId().equals(operationId)).findFirst();
- if (relatedOperation.isPresent()) {
- relatedOperation.get().setVnfDeleted();
- } else {
- logger.debug("No operation found for operation ID {} ", operationId);
- }
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/VnfmOperation.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/VnfmOperation.java
deleted file mode 100644
index 8cb9197d44..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/jobmanagement/VnfmOperation.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement;
-
-/**
- * Represents an operation on a VNFM.
- */
-public class VnfmOperation {
-
- private final String vnfmId;
- private final String operationId;
- private NotificationStatus notificationStatus;
- private boolean vnfDeleted;
-
- public VnfmOperation(final String vnfmId, final String operationId, final boolean waitForNotificationForSuccess) {
- this.vnfmId = vnfmId;
- this.operationId = operationId;
- this.notificationStatus = waitForNotificationForSuccess ? NotificationStatus.NOTIFICATION_PROCESSING_PENDING
- : NotificationStatus.NOTIFICATION_PROCESSING_NOT_REQUIRED;
- }
-
- /**
- * Get the ID of the operation on the VNFM.
- *
- * @return the ID of the operation on the VNFM
- */
- public String getOperationId() {
- return operationId;
- }
-
- /**
- * Get the ID of the VNFM the operation is carried out by.
- *
- * @return the ID of the VNFM
- */
- public String getVnfmId() {
- return vnfmId;
- }
-
- /**
- * Set the required notification has been processed for the operation.
- *
- * @param notificationProcessingWasSuccessful <code>true</code> if the notification processing was successful,
- * <code>false<code> otherwise
- */
- public void setNotificationProcessed(final boolean notificationProcessingWasSuccessful) {
- this.notificationStatus =
- notificationProcessingWasSuccessful ? NotificationStatus.NOTIFICATION_PROCEESING_SUCCESSFUL
- : NotificationStatus.NOTIFICATION_PROCESSING_FAILED;
- }
-
- /**
- * Get the notification status for the operation.
- *
- * @return the notification status
- */
- public NotificationStatus getNotificationStatus() {
- return notificationStatus;
- }
-
- /**
- * Set the VNF has been deleted from the VNFM.
- */
- public void setVnfDeleted() {
- this.vnfDeleted = true;
- }
-
- /**
- * Check if the VNF has been deleted from the VNFM
- *
- * @return <code>true</code> of the VNF has been deleted from the VNFM, <code>false</code> otherwise
- */
- public boolean isVnfDeleted() {
- return vnfDeleted;
- }
-
-
- public enum NotificationStatus {
- /**
- * No notification handling is required to determine the status of the operation
- */
- NOTIFICATION_PROCESSING_NOT_REQUIRED,
- /**
- * A notification must be processed before the notification can be considered to be completed
- */
- NOTIFICATION_PROCESSING_PENDING,
- /**
- * A notification has been successfully handled for the operation
- */
- NOTIFICATION_PROCEESING_SUCCESSFUL,
- /**
- * An error occurred processing a notification for the operation
- */
- NOTIFICATION_PROCESSING_FAILED;
- }
-
- @Override
- public String toString() {
- return "VnfmOperation [vnfmId=" + vnfmId + ", operationId=" + operationId + ", notificationStatus="
- + notificationStatus + "]";
- }
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/lifecycle/LifecycleManager.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/lifecycle/LifecycleManager.java
deleted file mode 100644
index 4a8e95ff07..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/lifecycle/LifecycleManager.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.lifecycle;
-
-import java.util.Map;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.EtsiPackageProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource.OamIpAddressType;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InstantiateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.LccnSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.TerminateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.TerminateVnfRequest.TerminationTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement.JobManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmRequestFailureException;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.google.common.base.Optional;
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
-
-/**
- * Manages lifecycle operations towards the VNFMs.
- */
-@Component
-public class LifecycleManager {
- private static final Logger logger = LoggerFactory.getLogger(LifecycleManager.class);
- private final AaiServiceProvider aaiServiceProvider;
- private final VnfmServiceProvider vnfmServiceProvider;
- private final AaiHelper aaiHelper;
- private final VnfmHelper vnfmHelper;
- private final JobManager jobManager;
- private final EtsiPackageProvider packageProvider;
-
- @Autowired
- LifecycleManager(final AaiServiceProvider aaiServiceProvider, final AaiHelper aaiHelper,
- final VnfmHelper vnfmHelper, final VnfmServiceProvider vnfmServiceProvider, final JobManager jobManager,
- final EtsiPackageProvider packageProvider) {
- this.aaiServiceProvider = aaiServiceProvider;
- this.vnfmServiceProvider = vnfmServiceProvider;
- this.aaiHelper = aaiHelper;
- this.vnfmHelper = vnfmHelper;
- this.jobManager = jobManager;
- this.packageProvider = packageProvider;
- }
-
- /**
- * Create a VNF on a VNFM.
- *
- * @param vnfIdInAai the ID of the VNF in AAI
- * @param request the create request
- * @return the response to the request
- */
- public CreateVnfResponse createVnf(final String vnfIdInAai, final CreateVnfRequest request) {
- final GenericVnf genericVnf = getGenericVnfFromAai(vnfIdInAai);
- EsrVnfm vnfm = aaiHelper.getAssignedVnfm(genericVnf);
- checkIfVnfAlreadyExistsInVnfm(vnfm, genericVnf);
-
- if (vnfm == null) {
- vnfm = aaiHelper.selectVnfm(genericVnf);
- aaiServiceProvider.invokePutGenericVnfToVnfmRelationship(genericVnf, vnfm.getVnfmId());
- }
- final InlineResponse201 vnfmResponse = sendCreateRequestToVnfm(request, genericVnf, vnfIdInAai, vnfm);
-
- logger.info("Create response: {}", vnfmResponse);
-
- genericVnf.setSelflink(getSelfLink(vnfmResponse, vnfm));
-
- final GenericVnf genericVnfPatch = new GenericVnf();
- genericVnfPatch.setVnfId(genericVnf.getVnfId());
- genericVnfPatch.setSelflink(genericVnf.getSelflink());
- aaiServiceProvider.invokePatchGenericVnf(genericVnfPatch);
-
- final String vnfIdInVnfm = vnfmResponse.getId();
-
- final OamIpAddressSource oamIpAddressSource = extractOamIpAddressSource(request);
- aaiHelper.setOamIpAddressSource(vnfIdInVnfm, oamIpAddressSource);
-
- createNotificationSubscription(vnfm, vnfIdInVnfm);
- final String operationId = sendInstantiateRequestToVnfm(vnfm, genericVnf, request);
-
- final String jobId = jobManager.createJob(vnfm.getVnfmId(), operationId, false);
- final CreateVnfResponse response = new CreateVnfResponse();
- response.setJobId(jobId);
- return response;
- }
-
- private String getSelfLink(final InlineResponse201 vnfmResponse, final EsrVnfm vnfm) {
- if (vnfmResponse.getLinks() != null && vnfmResponse.getLinks().getSelf() != null
- && vnfmResponse.getLinks().getSelf().getHref() != null) {
- return vnfmResponse.getLinks().getSelf().getHref();
- }
- return vnfm.getEsrSystemInfoList().getEsrSystemInfo().iterator().next().getServiceUrl() + "/vnf_instances/"
- + vnfmResponse.getId();
- }
-
- private OamIpAddressSource extractOamIpAddressSource(final CreateVnfRequest request) {
- final Map<String, String> additionalParams = request.getAdditionalParams();
- try {
- final String sourceType = additionalParams.remove("oamIpAddressSourceType");
- final String sourceValue = additionalParams.remove("oamIpAddressSourceValue");
- final OamIpAddressType oamIpAddressType = OamIpAddressType.valueOf(sourceType.toUpperCase());
- return new OamIpAddressSource(oamIpAddressType, sourceValue);
- } catch (final NullPointerException | IllegalArgumentException exception) {
- logger.debug("Additional Params not set for OAM IP address source", exception);
- return null;
- }
- }
-
- private void checkIfVnfAlreadyExistsInVnfm(final EsrVnfm vnfm, final GenericVnf genericVnf) {
- if (genericVnf.getSelflink() != null && !genericVnf.getSelflink().isEmpty() && vnfm != null) {
- Optional<InlineResponse201> response = Optional.absent();
- try {
- response = vnfmServiceProvider.getVnf(vnfm, genericVnf.getSelflink());
- } catch (final Exception exception) {
- logger.debug("Ignoring invalid self link in generic vnf", exception);
- }
- if (response.isPresent()) {
- throw new IllegalArgumentException("VNF " + genericVnf.getVnfId()
- + " is already defined on the VNFM, self link: " + genericVnf.getSelflink());
- }
- }
- }
-
- private InlineResponse201 sendCreateRequestToVnfm(final CreateVnfRequest createVnfRequest,
- final GenericVnf genericVnf, final String vnfIdInAai, final EsrVnfm vnfm) {
- logger.debug("Sending a create request to SVNFM {}", createVnfRequest);
- final org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.CreateVnfRequest vnfmRequest =
- new org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.CreateVnfRequest();
-
- final String pkgId = getPackageId(createVnfRequest, genericVnf);
- final String vnfdId = packageProvider.getVnfdId(pkgId);
- vnfmRequest.setVnfdId(vnfdId);
- vnfmRequest.setVnfInstanceName(createVnfRequest.getName().replaceAll(" ", "_"));
- vnfmRequest.setVnfInstanceDescription(vnfIdInAai);
-
- final Optional<InlineResponse201> optionalResponse = vnfmServiceProvider.createVnf(vnfm, vnfmRequest);
-
- try {
- return optionalResponse.get();
- } catch (final Exception exception) {
- final String errorMessage = "Unable to return response from VNFM";
- logger.error(errorMessage, exception);
- throw new VnfmRequestFailureException(errorMessage, exception);
- }
- }
-
- private String getPackageId(final CreateVnfRequest createVnfRequest, final GenericVnf genericVnf) {
- if (isNotBlank(createVnfRequest.getPkgId())) {
- logger.info("Found createVnfRequest pkgId: {}", createVnfRequest.getPkgId());
- return createVnfRequest.getPkgId();
- }
- logger.info("Found genericVnf modelVersionId: {}", genericVnf.getModelVersionId());
- return genericVnf.getModelVersionId();
- }
-
- private void createNotificationSubscription(final EsrVnfm vnfm, final String vnfId) {
- try {
- final LccnSubscriptionRequest subscriptionRequest = vnfmHelper.createNotificationSubscriptionRequest(vnfId);
- vnfmServiceProvider.subscribeForNotifications(vnfm, subscriptionRequest);
- } catch (final Exception exception) {
- logger.warn("Subscription for notifications to VNFM: " + vnfm.getVnfmId() + " for VNF " + vnfId
- + " failed. AAI will not be updated unless the VNFM is configured by other means to send notifications relating to this VNF",
- exception);
- }
- }
-
- private String sendInstantiateRequestToVnfm(final EsrVnfm vnfm, final GenericVnf genericVnf,
- final CreateVnfRequest createVnfRequest) {
-
- final String pkgId = getPackageId(createVnfRequest, genericVnf);
- final InstantiateVnfRequest instantiateVnfRequest = vnfmHelper.createInstantiateRequest(
- createVnfRequest.getTenant(), createVnfRequest, packageProvider.getFlavourId(pkgId));
- final String jobId = vnfmServiceProvider.instantiateVnf(vnfm, genericVnf.getSelflink(), instantiateVnfRequest);
-
- logger.info("Instantiate VNF request successfully sent to " + genericVnf.getSelflink());
- return jobId;
- }
-
- /**
- * Delete a VNF on a VNFM.
- *
- * @param vnfIdInAai the ID of the VNF in AAI
- * @return the response to the request
- */
- public DeleteVnfResponse deleteVnf(final String vnfIdInAai) {
- final GenericVnf genericVnf = getGenericVnfFromAai(vnfIdInAai);
- final EsrVnfm vnfm = getAssignedVnfm(genericVnf);
-
- final String operationId = sendTerminateRequestToVnfm(vnfm, genericVnf);
-
- if (operationId.equals(JobManager.ALREADY_COMPLETED_OPERATION_ID)) {
- sendDeleteRequestToVnfm(genericVnf);
- }
- final String jobId = jobManager.createJob(vnfm.getVnfmId(), operationId, true);
-
- return new DeleteVnfResponse().jobId(jobId);
- }
-
- private String sendTerminateRequestToVnfm(final EsrVnfm vnfm, final GenericVnf genericVnf) {
- final TerminateVnfRequest terminateVnfRequest = new TerminateVnfRequest();
- terminateVnfRequest.setTerminationType(TerminationTypeEnum.FORCEFUL);
- return vnfmServiceProvider.terminateVnf(vnfm, genericVnf.getSelflink(), terminateVnfRequest);
- }
-
- private GenericVnf getGenericVnfFromAai(final String vnfIdInAai) {
- final GenericVnf genericVnf = aaiServiceProvider.invokeGetGenericVnf(vnfIdInAai);
- if (genericVnf == null) {
- throw new VnfNotFoundException("VNF not found in AAI: " + vnfIdInAai);
- }
- logger.debug("Retrieved generic VNF from AAI: " + genericVnf);
- return genericVnf;
- }
-
- private EsrVnfm getAssignedVnfm(final GenericVnf genericVnf) {
- final EsrVnfm vnfm = aaiHelper.getAssignedVnfm(genericVnf);
- if (vnfm == null) {
- throw new VnfmNotFoundException("No VNFM found in AAI for VNF " + genericVnf.getVnfId());
- }
- return vnfm;
- }
-
- private void sendDeleteRequestToVnfm(final GenericVnf genericVnf) {
-
- vnfmServiceProvider.deleteVnf(aaiHelper.getAssignedVnfm(genericVnf), genericVnf.getSelflink());
-
- final GenericVnf genericVnfPatch = new GenericVnf();
- genericVnfPatch.setVnfId(genericVnf.getVnfId());
- genericVnfPatch.setOrchestrationStatus("Assigned");
- genericVnfPatch.setSelflink("");
- aaiServiceProvider.invokePatchGenericVnf(genericVnfPatch);
-
- for (final Relationship relationship : genericVnf.getRelationshipList().getRelationship()) {
- if (relationship.getRelatedTo().equals("vserver")) {
- aaiServiceProvider.invokeDeleteVserver(
- aaiHelper.getRelationshipData(relationship, "cloud-region.cloud-owner"),
- aaiHelper.getRelationshipData(relationship, "cloud-region.cloud-region-id"),
- aaiHelper.getRelationshipData(relationship, "tenant.tenant-id"),
- aaiHelper.getRelationshipData(relationship, "vserver.vserver-id"));
- }
- }
-
-
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/notificationhandling/NotificationHandler.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/notificationhandling/NotificationHandler.java
deleted file mode 100644
index f23fac8115..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/notificationhandling/NotificationHandler.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.notificationhandling;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.aai.domain.yang.Vserver;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource.OamIpAddressType;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201VimConnectionInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement.JobManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs.ChangeTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationStateEnum;
-import org.slf4j.Logger;
-
-/**
- * Performs updates to AAI based on a received notification. The updates are executed in a separate thread so as the
- * notification response to the VNFM is not delayed.
- */
-public class NotificationHandler implements Runnable {
- private static Logger logger = getLogger(NotificationHandler.class);
- private final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification;
- private final AaiHelper aaiHelper;
- private final AaiServiceProvider aaiServiceProvider;
- private final VnfmServiceProvider vnfmServiceProvider;
- private final JobManager jobManager;
- private final InlineResponse201 vnfInstance;
-
- public NotificationHandler(final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification,
- final AaiHelper aaiHelper, final AaiServiceProvider aaiServiceProvider,
- final VnfmServiceProvider vnfmServiceProvider, final JobManager jobManager,
- final InlineResponse201 vnfInstance) {
- this.vnfLcmOperationOccurrenceNotification = vnfLcmOperationOccurrenceNotification;
- this.aaiHelper = aaiHelper;
- this.aaiServiceProvider = aaiServiceProvider;
- this.vnfmServiceProvider = vnfmServiceProvider;
- this.jobManager = jobManager;
- this.vnfInstance = vnfInstance;
- }
-
- @Override
- public void run() {
- try {
- if (vnfLcmOperationOccurrenceNotification.getOperationState().equals(OperationStateEnum.COMPLETED)) {
- switch (vnfLcmOperationOccurrenceNotification.getOperation()) {
- case INSTANTIATE:
- handleVnfInstantiate();
- break;
- case TERMINATE:
- handleVnfTerminate();
- break;
- default:
- }
- }
- } catch (final Exception exception) {
- logger.error("Error encountered handling notification, AAI may not be updated correctly "
- + vnfLcmOperationOccurrenceNotification, exception);
- }
- }
-
- private void handleVnfInstantiate() {
- if (vnfLcmOperationOccurrenceNotification.getOperationState().equals(OperationStateEnum.COMPLETED)) {
- handleVnfInstantiateCompleted();
- }
- }
-
- private void handleVnfInstantiateCompleted() {
- final GenericVnf genericVnf = aaiServiceProvider
- .invokeQueryGenericVnf(vnfInstance.getLinks().getSelf().getHref()).getGenericVnf().get(0);
-
- final GenericVnf genericVnfPatch = new GenericVnf();
- genericVnfPatch.setVnfId(genericVnf.getVnfId());
- setOamIpAddress(genericVnfPatch, vnfInstance);
- genericVnfPatch.setOrchestrationStatus("Created");
- aaiServiceProvider.invokePatchGenericVnf(genericVnfPatch);
-
- addVservers(vnfLcmOperationOccurrenceNotification, genericVnf.getVnfId(), vnfInstance.getVimConnectionInfo());
-
- logger.debug("Finished handling notification for vnfm: " + vnfInstance.getId());
- }
-
- private void setOamIpAddress(final GenericVnf genericVnf, final InlineResponse201 vnfInstance) {
- final OamIpAddressSource oamIpAddressSource = aaiHelper.getOamIpAddressSource(vnfInstance.getId());
- if (oamIpAddressSource == null) {
- logger.warn("No source indicated for OAM IP address, no value will be set in AAI");
- return;
- }
- if (oamIpAddressSource.getType().equals(OamIpAddressType.LITERAL)) {
- genericVnf.setIpv4OamAddress(oamIpAddressSource.getValue());
- } else {
- try {
- logger.debug("ConfigurableProperties: " + vnfInstance.getVnfConfigurableProperties());
- if (vnfInstance.getVnfConfigurableProperties() == null) {
- logger.warn("No ConfigurableProperties, cannot set OAM IP Address");
- }
- final JSONObject properties = new JSONObject((Map) vnfInstance.getVnfConfigurableProperties());
- genericVnf.setIpv4OamAddress(properties.get(oamIpAddressSource.getValue()).toString());
- } catch (final JSONException jsonException) {
- logger.error("Error getting vnfIpAddress", jsonException);
- }
- }
- }
-
- private void handleVnfTerminate() {
- switch (vnfLcmOperationOccurrenceNotification.getOperationState()) {
- case COMPLETED:
- handleVnfTerminateCompleted();
- break;
- case FAILED:
- case ROLLING_BACK:
- handleVnfTerminateFailed();
- break;
- default:
- }
- }
-
- private void handleVnfTerminateFailed() {
- try {
- final GenericVnf genericVnf = aaiServiceProvider
- .invokeQueryGenericVnf(vnfInstance.getLinks().getSelf().getHref()).getGenericVnf().get(0);
- deleteVserversFromAai(vnfLcmOperationOccurrenceNotification, genericVnf);
- } finally {
- jobManager.notificationProcessedForOperation(vnfLcmOperationOccurrenceNotification.getVnfLcmOpOccId(),
- false);
- }
- }
-
- private void handleVnfTerminateCompleted() {
- GenericVnf genericVnf = null;
- boolean vServersDeletedFromAai = false;
- boolean identifierDeletedFromVnfm = false;
- boolean genericVnfUpdated = false;
- try {
- genericVnf = aaiServiceProvider.invokeQueryGenericVnf(vnfInstance.getLinks().getSelf().getHref())
- .getGenericVnf().get(0);
- vServersDeletedFromAai = deleteVserversFromAai(vnfLcmOperationOccurrenceNotification, genericVnf);
- identifierDeletedFromVnfm = deleteVnfIdentifierOnVnfm(genericVnf);
- genericVnfUpdated = patchVnfInAai(genericVnf.getVnfId(), "Assigned", identifierDeletedFromVnfm ? "" : null);
- } finally {
- jobManager.notificationProcessedForOperation(vnfLcmOperationOccurrenceNotification.getVnfLcmOpOccId(),
- vServersDeletedFromAai && identifierDeletedFromVnfm && genericVnfUpdated);
- jobManager.vnfDeleted(vnfLcmOperationOccurrenceNotification.getVnfLcmOpOccId());
- }
- }
-
- private void addVservers(final VnfLcmOperationOccurrenceNotification notification, final String vnfId,
- final List<InlineResponse201VimConnectionInfo> vnfInstancesVimConnectionInfo) {
- final Map<String, InlineResponse201VimConnectionInfo> vimConnectionIdToVimConnectionInfo = new HashMap<>();
- for (final InlineResponse201VimConnectionInfo vimConnectionInfo : vnfInstancesVimConnectionInfo) {
- vimConnectionIdToVimConnectionInfo.put(vimConnectionInfo.getId(), vimConnectionInfo);
- }
-
- for (final LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs vnfc : notification.getAffectedVnfcs()) {
- final InlineResponse201VimConnectionInfo vimConnectionInfo =
- getVimConnectionInfo(vimConnectionIdToVimConnectionInfo, vnfc);
- if (ChangeTypeEnum.ADDED.equals(vnfc.getChangeType())) {
- final Vserver vserver = aaiHelper.createVserver(vnfc);
- aaiServiceProvider.invokePutVserver(getCloudOwner(vimConnectionInfo), getCloudRegion(vimConnectionInfo),
- getTenant(vimConnectionInfo), vserver);
-
- aaiServiceProvider.invokePutVserverToVnfRelationship(getCloudOwner(vimConnectionInfo),
- getCloudRegion(vimConnectionInfo), getTenant(vimConnectionInfo), vserver, vnfId);
- }
- }
- }
-
- private boolean deleteVserversFromAai(final VnfLcmOperationOccurrenceNotification notification,
- final GenericVnf vnf) {
- try {
- for (final LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs vnfc : notification.getAffectedVnfcs()) {
- if (ChangeTypeEnum.REMOVED.equals(vnfc.getChangeType())) {
-
- final Relationship relationshipToVserver = aaiHelper.deleteRelationshipWithDataValue(vnf, "vserver",
- "vserver.vserver-id", vnfc.getComputeResource().getResourceId());
-
- aaiServiceProvider.invokeDeleteVserver(
- aaiHelper.getRelationshipData(relationshipToVserver, "cloud-region.cloud-owner"),
- aaiHelper.getRelationshipData(relationshipToVserver, "cloud-region.cloud-region-id"),
- aaiHelper.getRelationshipData(relationshipToVserver, "tenant.tenant-id"),
- vnfc.getComputeResource().getResourceId());
- }
- }
- return true;
- } catch (final Exception exception) {
- logger.error(
- "Error encountered deleting vservers based on received notification, AAI may not be updated correctly "
- + vnfLcmOperationOccurrenceNotification,
- exception);
- return false;
- }
- }
-
- private boolean deleteVnfIdentifierOnVnfm(final GenericVnf genericVnf) {
- try {
- vnfmServiceProvider.deleteVnf(aaiHelper.getAssignedVnfm(genericVnf), genericVnf.getSelflink());
- return true;
- } catch (final Exception exception) {
- logger.error("Exception deleting the identifier " + genericVnf.getSelflink()
- + " from the VNFM. The VNF has been terminated successfully but the identifier will remain on the VNFM.",
- exception);
- return false;
- }
- }
-
- private boolean patchVnfInAai(final String vnfId, final String orchestrationStatus, final String selfLink) {
- try {
- final GenericVnf genericVnfPatch = new GenericVnf();
- genericVnfPatch.setVnfId(vnfId);
- genericVnfPatch.setOrchestrationStatus(orchestrationStatus);
- if (selfLink != null) {
- genericVnfPatch.setSelflink(selfLink);
- }
- aaiServiceProvider.invokePatchGenericVnf(genericVnfPatch);
- return true;
- } catch (final Exception exception) {
- logger.error(
- "Error encountered setting orchestration status and/or self link based on received notification, AAI may not be updated correctly "
- + vnfLcmOperationOccurrenceNotification,
- exception);
- return false;
- }
- }
-
- private InlineResponse201VimConnectionInfo getVimConnectionInfo(
- final Map<String, InlineResponse201VimConnectionInfo> vimConnectionIdToVimConnectionInfo,
- final LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs vnfc) {
- final String vimConnectionId = vnfc.getComputeResource().getVimConnectionId();
- return vimConnectionIdToVimConnectionInfo.get(vimConnectionId);
- }
-
- private String getCloudOwner(final InlineResponse201VimConnectionInfo vimConnectionInfo) {
- final String vimId = vimConnectionInfo.getVimId();
- return vimId.substring(0, vimId.indexOf("_"));
- }
-
- private String getCloudRegion(final InlineResponse201VimConnectionInfo vimConnectionInfo) {
- final String vimId = vimConnectionInfo.getVimId();
- return vimId.substring(vimId.indexOf("_") + 1);
- }
-
- private String getTenant(final InlineResponse201VimConnectionInfo vimConnectionInfo) {
- final JSONObject vimConnectionJsonObject = new JSONObject(vimConnectionInfo);
- return vimConnectionJsonObject.getJSONObject("accessInfo").get("projectId").toString();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterController.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterController.java
deleted file mode 100644
index 70131c89a5..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterController.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.BASE_URL;
-import javax.validation.Valid;
-import javax.ws.rs.core.MediaType;
-import org.onap.logging.ref.slf4j.ONAPLogConstants;
-import org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement.JobManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.lifecycle.LifecycleManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import io.swagger.annotations.ApiParam;
-
-/**
- * Controller for handling requests to the VNFM (Virtual Network Function Manager) adapter REST API.
- */
-@Controller
-@RequestMapping(value = BASE_URL, produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-public class EtsiSol003AdapterController {
-
- private static final Logger logger = LoggerFactory.getLogger(EtsiSol003AdapterController.class);
- private final LifecycleManager lifecycleManager;
- private final JobManager jobManager;
-
- @Autowired
- EtsiSol003AdapterController(final LifecycleManager lifecycleManager, final JobManager jobManager) {
- this.lifecycleManager = lifecycleManager;
- this.jobManager = jobManager;
- }
-
- @PostMapping(value = "/vnfs/{vnfId}")
- public ResponseEntity<CreateVnfResponse> vnfCreate(
- @ApiParam(value = "The identifier of the VNF. This must be the vnf-id of an existing generic-vnf in AAI.",
- required = true) @PathVariable("vnfId") final String vnfId,
- @ApiParam(value = "VNF creation parameters",
- required = true) @Valid @RequestBody final CreateVnfRequest createVnfRequest,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single top level invocation of ONAP",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.REQUEST_ID,
- required = false) final String requestId,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies the client application user agent or user invoking the API",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.PARTNER_NAME,
- required = false) final String partnerName,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single invocation of a single component",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.INVOCATION_ID,
- required = false) final String invocationId) {
-
- setLoggingMDCs(requestId, partnerName, invocationId);
-
- logger.info("REST request vnfCreate with body: {}", createVnfRequest);
-
- try {
- final CreateVnfResponse createVnfResponse = lifecycleManager.createVnf(vnfId, createVnfRequest);
- return new ResponseEntity<>(createVnfResponse, HttpStatus.ACCEPTED);
- } finally {
- clearLoggingMDCs();
- }
- }
-
- @DeleteMapping(value = "/vnfs/{vnfId}")
- public ResponseEntity<DeleteVnfResponse> vnfDelete(
- @ApiParam(value = "The identifier of the VNF. This must be the vnf-id of an existing generic-vnf in AAI.",
- required = true) @PathVariable("vnfId") final String vnfId,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single top level invocation of ONAP",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.REQUEST_ID,
- required = false) final String requestId,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies the client application user agent or user invoking the API",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.PARTNER_NAME,
- required = false) final String partnerName,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single invocation of a single component",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.INVOCATION_ID,
- required = false) final String invocationId) {
-
- setLoggingMDCs(requestId, partnerName, invocationId);
-
- logger.info("REST request vnfDelete for VNF: {}", vnfId);
-
- try {
- final DeleteVnfResponse response = lifecycleManager.deleteVnf(vnfId);
- return new ResponseEntity<>(response, HttpStatus.ACCEPTED);
- } finally {
- clearLoggingMDCs();
- }
- }
-
- @GetMapping(value = "/jobs/{jobId}")
- public ResponseEntity<QueryJobResponse> jobQuery(
- @ApiParam(value = "The identifier of the Job.", required = true) @PathVariable("jobId") final String jobId,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single top level invocation of ONAP",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.REQUEST_ID,
- required = false) final String requestId,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies the client application user agent or user invoking the API",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.PARTNER_NAME,
- required = false) final String partnerName,
- @ApiParam(
- value = "Used to track REST requests for logging purposes. Identifies a single invocation of a single component",
- required = false) @RequestHeader(value = ONAPLogConstants.Headers.INVOCATION_ID,
- required = false) final String invocationId) {
-
- setLoggingMDCs(requestId, partnerName, invocationId);
-
- try {
- final QueryJobResponse response = jobManager.getVnfmOperation(jobId);
- return new ResponseEntity<>(response, HttpStatus.OK);
- } finally {
- clearLoggingMDCs();
- }
- }
-
- private void setLoggingMDCs(final String requestId, final String partnerName, final String invocationId) {
- MDC.put(ONAPLogConstants.MDCs.REQUEST_ID, requestId);
- MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, partnerName);
- MDC.put(ONAPLogConstants.MDCs.INVOCATION_ID, invocationId);
- }
-
- private void clearLoggingMDCs() {
- MDC.clear();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantController.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantController.java
deleted file mode 100644
index 8a17b68fae..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantController.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.BASE_URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import javax.ws.rs.core.MediaType;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantsAddResources;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201AddResources;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201VimConnections;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-@RequestMapping(value = BASE_URL, produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
-public class Sol003GrantController {
-
- private static final Logger logger = LoggerFactory.getLogger(Sol003GrantController.class);
- public final AaiServiceProvider aaiServiceProvider;
- public final AaiHelper aaiHelper;
- public final VnfmHelper vnfmHelper;
-
- @Autowired
- public Sol003GrantController(final AaiServiceProvider aaiServiceProvider, final AaiHelper aaiHelper,
- final VnfmHelper vnfmHelper) {
- this.aaiServiceProvider = aaiServiceProvider;
- this.aaiHelper = aaiHelper;
- this.vnfmHelper = vnfmHelper;
- }
-
- @GetMapping(value = "/grants/{grantId}")
- public ResponseEntity<InlineResponse201> grantsGrantIdGet(@PathVariable("grantId") final String grantId) {
- logger.info("Get grant received from VNFM, grant id: " + grantId);
- return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
- }
-
- @PostMapping(value = "/grants")
- public ResponseEntity<InlineResponse201> grantsPost(@RequestBody final GrantRequest grantRequest) {
- logger.info("Grant request received from VNFM: " + grantRequest);
-
- final InlineResponse201 grantResponse = createGrantResponse(grantRequest);
- logger.info("Grant request returning to VNFM: " + grantResponse);
- return new ResponseEntity<>(grantResponse, HttpStatus.CREATED);
- }
-
- private InlineResponse201 createGrantResponse(final GrantRequest grantRequest) {
- final InlineResponse201 grantResponse = new InlineResponse201();
- grantResponse.setId(UUID.randomUUID().toString());
- grantResponse.setVnfInstanceId(grantRequest.getVnfInstanceId());
- grantResponse.setVnfLcmOpOccId(grantRequest.getVnfLcmOpOccId());
- final String vnfSelfLink = grantRequest.getLinks().getVnfInstance().getHref();
- final Tenant tenant = aaiHelper
- .getAssignedTenant(aaiServiceProvider.invokeQueryGenericVnf(vnfSelfLink).getGenericVnf().get(0));
-
- String vimConnectionId = "";
- final InlineResponse201VimConnections vimConnection = vnfmHelper.getVimConnections(tenant);
- grantResponse.addVimConnectionsItem(vimConnection);
- vimConnectionId = vimConnection.getId();
-
- if (grantRequest.getOperation().equals(GrantRequest.OperationEnum.INSTANTIATE)) {
- grantResponse.addResources(getResources(grantRequest.getAddResources(), vimConnectionId));
- } else if (grantRequest.getOperation().equals(GrantRequest.OperationEnum.TERMINATE)) {
- grantResponse.removeResources(getResources(grantRequest.getRemoveResources(), vimConnectionId));
- }
- return grantResponse;
- }
-
- private List<InlineResponse201AddResources> getResources(final List<GrantsAddResources> requestResources,
- final String vimId) {
- final List<InlineResponse201AddResources> resources = new ArrayList<>();
- for (final GrantsAddResources requestResource : requestResources) {
- final InlineResponse201AddResources responseResource = new InlineResponse201AddResources();
- responseResource.setResourceDefinitionId(requestResource.getId());
- responseResource.setVimConnectionId(vimId);
- resources.add(responseResource);
- }
- return resources;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnContoller.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnContoller.java
deleted file mode 100644
index 784fb8efa6..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnContoller.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.BASE_URL;
-import static org.onap.so.adapters.etsisol003adapter.lcm.LifeCycleManagementConstants.OPERATION_NOTIFICATION_ENDPOINT;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import javax.ws.rs.core.MediaType;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.jobmanagement.JobManager;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfIdentifierCreationNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfIdentifierDeletionNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.notificationhandling.NotificationHandler;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * Controller for handling notifications from the VNFM (Virtual Network Function Manager).
- */
-@Controller
-@RequestMapping(value = BASE_URL, produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-public class Sol003LcnContoller {
- private static Logger logger = getLogger(Sol003LcnContoller.class);
- private static final String LOG_LCN_RECEIVED = "LCN received from VNFM: ";
- private final AaiServiceProvider aaiServiceProvider;
- private final AaiHelper aaiHelper;
- private final VnfmServiceProvider vnfmServiceProvider;
- private final JobManager jobManager;
- private final ExecutorService executor = Executors.newCachedThreadPool();
-
- @Autowired
- Sol003LcnContoller(final AaiServiceProvider aaiServiceProvider, final AaiHelper aaiHelper,
- final VnfmServiceProvider vnfmServiceProvider, final JobManager jobManager) {
- this.aaiServiceProvider = aaiServiceProvider;
- this.aaiHelper = aaiHelper;
- this.vnfmServiceProvider = vnfmServiceProvider;
- this.jobManager = jobManager;
- }
-
- @PostMapping(value = "/lcn/VnfIdentifierCreationNotification")
- public ResponseEntity<Void> lcnVnfIdentifierCreationNotificationPost(
- @RequestBody final VnfIdentifierCreationNotification vnfIdentifierCreationNotification) {
- logger.info(LOG_LCN_RECEIVED + vnfIdentifierCreationNotification);
- return new ResponseEntity<>(HttpStatus.NO_CONTENT);
- }
-
- @PostMapping(value = "/lcn/VnfIdentifierDeletionNotification")
- public ResponseEntity<Void> lcnVnfIdentifierDeletionNotificationPost(
- @RequestBody final VnfIdentifierDeletionNotification vnfIdentifierDeletionNotification) {
- logger.info(LOG_LCN_RECEIVED + vnfIdentifierDeletionNotification);
- return new ResponseEntity<>(HttpStatus.NO_CONTENT);
- }
-
- @PostMapping(value = OPERATION_NOTIFICATION_ENDPOINT)
- public ResponseEntity<Void> lcnVnfLcmOperationOccurrenceNotificationPost(
- @RequestBody final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification) {
- logger.info(LOG_LCN_RECEIVED + vnfLcmOperationOccurrenceNotification);
-
- if (isANotificationOfInterest(vnfLcmOperationOccurrenceNotification)) {
- final InlineResponse201 vnfInstance = getVnfInstance(vnfLcmOperationOccurrenceNotification);
- final NotificationHandler handler = new NotificationHandler(vnfLcmOperationOccurrenceNotification,
- aaiHelper, aaiServiceProvider, vnfmServiceProvider, jobManager, vnfInstance);
- executor.execute(handler);
- }
-
- logger.info("Sending notification response");
- return new ResponseEntity<>(HttpStatus.NO_CONTENT);
- }
-
- private boolean isANotificationOfInterest(final VnfLcmOperationOccurrenceNotification notification) {
- return isInstanitiateCompleted(notification) || isTerminateTerminalState(notification);
- }
-
- private boolean isInstanitiateCompleted(final VnfLcmOperationOccurrenceNotification notification) {
- return notification.getOperation().equals(OperationEnum.INSTANTIATE)
- && notification.getOperationState().equals(OperationStateEnum.COMPLETED);
- }
-
- private boolean isTerminateTerminalState(final VnfLcmOperationOccurrenceNotification notification) {
- return notification.getOperation().equals(OperationEnum.TERMINATE)
- && (notification.getOperationState().equals(OperationStateEnum.COMPLETED)
- || notification.getOperationState().equals(OperationStateEnum.FAILED)
- || notification.getOperationState().equals(OperationStateEnum.ROLLED_BACK));
- }
-
- private InlineResponse201 getVnfInstance(
- final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification) {
- final GenericVnf vnfInAai = aaiServiceProvider
- .invokeQueryGenericVnf(vnfLcmOperationOccurrenceNotification.getLinks().getVnfInstance().getHref())
- .getGenericVnf().get(0);
- final EsrVnfm vnfm = aaiHelper.getAssignedVnfm(vnfInAai);
- return vnfmServiceProvider
- .getVnf(vnfm, vnfLcmOperationOccurrenceNotification.getLinks().getVnfInstance().getHref()).get();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/JobNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/JobNotFoundException.java
deleted file mode 100644
index 2461631bc4..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/JobNotFoundException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for job not found.
- */
-@ResponseStatus(HttpStatus.NOT_FOUND)
-public class JobNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 6398018034431666933L;
-
- public JobNotFoundException(final String message) {
- super(message);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/TenantNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/TenantNotFoundException.java
deleted file mode 100644
index b7911c82e7..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/TenantNotFoundException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions;
-
-/**
- * Exception for Tenant not found.
- */
-
-public class TenantNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 6398018034431666933L;
-
- public TenantNotFoundException(final String message) {
- super(message);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfNotFoundException.java
deleted file mode 100644
index 78232e2622..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfNotFoundException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for VNF not found.
- */
-@ResponseStatus(HttpStatus.NOT_FOUND)
-public class VnfNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 6398018034431666933L;
-
- public VnfNotFoundException(final String message) {
- super(message);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmNotFoundException.java
deleted file mode 100644
index 6720d0bd92..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmNotFoundException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for VNFM not found.
- */
-@ResponseStatus(HttpStatus.BAD_REQUEST)
-public class VnfmNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 6398018034431666933L;
-
- public VnfmNotFoundException(final String message) {
- super(message);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmRequestFailureException.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmRequestFailureException.java
deleted file mode 100644
index 10ada7ce18..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/exceptions/VnfmRequestFailureException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions;
-
-/**
- * Exception indicating a request to a VNFM failed.
- */
-public class VnfmRequestFailureException extends RuntimeException {
-
- private static final long serialVersionUID = 6398018034431666933L;
-
- public VnfmRequestFailureException(final String message) {
- super(message);
- }
-
- public VnfmRequestFailureException(final String message, final Throwable throwable) {
- super(message, throwable);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
deleted file mode 100644
index bc6ef94f42..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
+++ /dev/null
@@ -1 +0,0 @@
-org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiPropertiesImpl \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java
deleted file mode 100644
index 5bc4daac42..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmRestTemplateConfiguration;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.content;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.net.URI;
-import java.util.Optional;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.hamcrest.MockitoHamcrest;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.EsrVnfmList;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.aai.domain.yang.RelationshipData;
-import org.onap.aai.domain.yang.RelationshipList;
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.onap.aaiclient.client.aai.AAIVersion;
-import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri;
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.EtsiPackageProvider;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmRestTemplateConfiguration;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201.InstantiationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201Links;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201LinksSelf;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.JSON;
-import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import org.threeten.bp.LocalDateTime;
-import org.threeten.bp.OffsetDateTime;
-import org.threeten.bp.ZoneOffset;
-import com.google.gson.Gson;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class EtsiSol003AdapterControllerTest {
-
- private static final OffsetDateTime JAN_1_2019_12_00 =
- OffsetDateTime.of(LocalDateTime.of(2019, 1, 1, 12, 0), ZoneOffset.UTC);
- private static final OffsetDateTime JAN_1_2019_1_00 =
- OffsetDateTime.of(LocalDateTime.of(2019, 1, 1, 1, 0), ZoneOffset.UTC);
- private static final String CLOUD_OWNER = "myTestCloudOwner";
- private static final String REGION = "myTestRegion";
- private static final String TENANT_ID = "myTestTenantId";
-
- @LocalServerPort
- private int port;
- @Autowired
- @Qualifier(VnfmRestTemplateConfiguration.SOL003_LCM_REST_TEMPLATE)
- private RestTemplate testRestTemplate;
- private MockRestServiceServer mockRestServer;
-
- @MockBean
- AAIResourcesClient aaiResourcesClient;
-
- @MockBean
- EtsiPackageProvider etsiPackageProvider;
-
- @Autowired
- EtsiSol003AdapterController controller;
- Gson gson = new JSON().getGson();
-
- @Before
- public void setUp() throws Exception {
- mockRestServer = MockRestServiceServer.bindTo(testRestTemplate).build();
- }
-
- @Test
- public void createVnf_ValidRequest_Returns202AndJobId() throws Exception {
- final Tenant tenant = new Tenant().cloudOwner(CLOUD_OWNER).regionName(REGION).tenantId(TENANT_ID);
- final CreateVnfRequest createVnfRequest = new CreateVnfRequest().name("myTestName").tenant(tenant);
-
- setUpGenericVnfInMockAai("vnfmType2");
- setUpVnfmsInMockAai();
- setUpVimInMockAai();
-
- final String expectedsubscriptionRequest =
- "{\"filter\":{\"vnfInstanceSubscriptionFilter\":{\"vnfInstanceIds\":[\"vnfId\"]},\"notificationTypes\":[\"VnfLcmOperationOccurrenceNotification\"]},\"callbackUri\":\"https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/lcn/VnfLcmOperationOccurrenceNotification\",\"authentication\":{\"authType\":[\"OAUTH2_CLIENT_CREDENTIALS\", \"BASIC\", \"TLS_CERT\"],\"paramsOauth2ClientCredentials\":{\"clientId\":\"vnfm\",\"clientPassword\":\"password1$\",\"tokenEndpoint\":\"https://so-vnfm-adapter.onap:30406/oauth/token\"},\"paramsBasic\":{\"userName\":\"vnfm\",\"password\":\"password1$\"}}}";
- final InlineResponse2001 subscriptionResponse = new InlineResponse2001();
-
- final InlineResponse201 createResponse = createCreateResponse();
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances"))
- .andRespond(withSuccess(gson.toJson(createResponse), MediaType.APPLICATION_JSON));
-
- mockRestServer.expect(requestTo("http://vnfm2:8080/subscriptions"))
- .andExpect(content().json(expectedsubscriptionRequest))
- .andRespond(withSuccess(gson.toJson(subscriptionResponse), MediaType.APPLICATION_JSON));
-
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances/vnfId/instantiate"))
- .andRespond(withStatus(HttpStatus.ACCEPTED).contentType(MediaType.APPLICATION_JSON)
- .location(new URI("http://vnfm2:8080/vnf_lcm_op_occs/123456")));
-
- final InlineResponse200 firstOperationQueryResponse = createOperationQueryResponse(
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.INSTANTIATE,
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.PROCESSING);
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_lcm_op_occs/123456"))
- .andRespond(withSuccess(gson.toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON));
-
- final InlineResponse200 secondOperationQueryReponse = createOperationQueryResponse(
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.INSTANTIATE,
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.COMPLETED);
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_lcm_op_occs/123456"))
- .andRespond(withSuccess(gson.toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON));
-
- // Invoke the create request
-
- final ResponseEntity<CreateVnfResponse> createVnfResponse =
- controller.vnfCreate("myTestVnfId", createVnfRequest, "asadas", "so", "1213");
- assertEquals(HttpStatus.ACCEPTED, createVnfResponse.getStatusCode());
- assertNotNull(createVnfResponse.getBody().getJobId());
-
- final ArgumentCaptor<GenericVnf> genericVnfArgument = ArgumentCaptor.forClass(GenericVnf.class);
- final ArgumentCaptor<AAIResourceUri> uriArgument = ArgumentCaptor.forClass(AAIResourceUri.class);
-
- verify(aaiResourcesClient).update(uriArgument.capture(), genericVnfArgument.capture());
-
- assertEquals("/network/generic-vnfs/generic-vnf/myTestVnfId", uriArgument.getValue().build().toString());
-
- assertEquals("myTestVnfId", genericVnfArgument.getValue().getVnfId());
-
- final ArgumentCaptor<AAIResourceUri> uriArgument1Connect = ArgumentCaptor.forClass(AAIResourceUri.class);
- final ArgumentCaptor<AAIResourceUri> uriArgument2Connect = ArgumentCaptor.forClass(AAIResourceUri.class);
- verify(aaiResourcesClient, timeout(1000)).connect(uriArgument1Connect.capture(), uriArgument2Connect.capture());
- assertEquals("/external-system/esr-vnfm-list/esr-vnfm/vnfm2",
- uriArgument1Connect.getAllValues().get(0).build().toString());
- assertEquals("/network/generic-vnfs/generic-vnf/myTestVnfId",
- uriArgument2Connect.getAllValues().get(0).build().toString());
-
- // check the job status
-
- final ResponseEntity<QueryJobResponse> firstJobQueryResponse =
- controller.jobQuery(createVnfResponse.getBody().getJobId(), "", "so", "1213");
- assertEquals(OperationEnum.INSTANTIATE, firstJobQueryResponse.getBody().getOperation());
- assertEquals(OperationStateEnum.PROCESSING, firstJobQueryResponse.getBody().getOperationState());
- assertEquals(JAN_1_2019_12_00, firstJobQueryResponse.getBody().getStartTime());
- assertEquals(JAN_1_2019_1_00, firstJobQueryResponse.getBody().getStateEnteredTime());
-
- final ResponseEntity<QueryJobResponse> secondJobQueryResponse =
- controller.jobQuery(createVnfResponse.getBody().getJobId(), "", "so", "1213");
- assertEquals(OperationEnum.INSTANTIATE, secondJobQueryResponse.getBody().getOperation());
- assertEquals(OperationStateEnum.COMPLETED, secondJobQueryResponse.getBody().getOperationState());
- assertEquals(JAN_1_2019_12_00, secondJobQueryResponse.getBody().getStartTime());
- assertEquals(JAN_1_2019_1_00, secondJobQueryResponse.getBody().getStateEnteredTime());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void createVnf_VnfAlreadyExistsOnVnfm_ThrowsIllegalArgumentException() throws Exception {
- final Tenant tenant = new Tenant().cloudOwner(CLOUD_OWNER).regionName(REGION).tenantId(TENANT_ID);
- final CreateVnfRequest createVnfRequest = new CreateVnfRequest().name("myTestName").tenant(tenant);
-
- final GenericVnf genericVnf = setUpGenericVnfInMockAai("vnfmType1");
- addSelfLinkToGenericVnf(genericVnf);
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- setUpVnfmsInMockAai();
-
- final InlineResponse201 reponse = new InlineResponse201();
- mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")))
- .andRespond(withSuccess(gson.toJson(reponse), MediaType.APPLICATION_JSON));
-
- controller.vnfCreate("myTestVnfId", createVnfRequest, "asadas", "so", "1213");
- }
-
- @Test(expected = VnfmNotFoundException.class)
- public void createVnf_NoMatchingVnfmFound_ThrowsException() throws Exception {
- final Tenant tenant = new Tenant().cloudOwner(CLOUD_OWNER).regionName(REGION).tenantId(TENANT_ID);
- final CreateVnfRequest createVnfRequest = new CreateVnfRequest().name("myTestName").tenant(tenant);
-
- setUpGenericVnfInMockAai("anotherType");
- setUpVnfmsInMockAai();
-
- controller.vnfCreate("myTestVnfId", createVnfRequest, "asadas", "so", "1213");
- }
-
- @Test
- public void createVnf_VnfmAlreadyAssociatedWithVnf_Returns202AndJobId() throws Exception {
- final Tenant tenant = new Tenant().cloudOwner(CLOUD_OWNER).regionName(REGION).tenantId(TENANT_ID);
- final CreateVnfRequest createVnfRequest = new CreateVnfRequest().name("myTestName").tenant(tenant);
-
- final GenericVnf genericVnf = setUpGenericVnfInMockAai("vnfmType2");
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm2");
- setUpVnfmsInMockAai();
- setUpVimInMockAai();
-
- final InlineResponse201 createResponse = createCreateResponse();
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances"))
- .andRespond(withSuccess(gson.toJson(createResponse), MediaType.APPLICATION_JSON));
-
- mockRestServer.expect(requestTo("http://vnfm2:8080/subscriptions")).andRespond(withBadRequest());
-
- mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances/vnfId/instantiate"))
- .andRespond(withStatus(HttpStatus.ACCEPTED).contentType(MediaType.APPLICATION_JSON)
- .location(new URI("http://vnfm2:8080/vnf_lcm_op_occs/123456")));
-
- final ResponseEntity<CreateVnfResponse> response =
- controller.vnfCreate("myTestVnfId", createVnfRequest, "asadas", "so", "1213");
- assertEquals(HttpStatus.ACCEPTED, response.getStatusCode());
- assertNotNull(response.getBody().getJobId());
- }
-
- @Test
- @Ignore
- public void createVnf_UnauthorizedUser_Returns401() throws Exception {
- final TestRestTemplate restTemplateWrongPassword = new TestRestTemplate("test", "wrongPassword");
- final Tenant tenant = new Tenant().cloudOwner(CLOUD_OWNER).regionName(REGION).tenantId(TENANT_ID);
- final CreateVnfRequest createVnfRequest = new CreateVnfRequest().name("myTestName").tenant(tenant);
-
- final RequestEntity<CreateVnfRequest> request =
- RequestEntity.post(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myVnfId"))
- .accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON)
- .header("X-ONAP-RequestId", "myRequestId").header("X-ONAP-InvocationID", "myInvocationId")
- .body(createVnfRequest);
- final ResponseEntity<CreateVnfResponse> response =
- restTemplateWrongPassword.exchange(request, CreateVnfResponse.class);
- assertEquals(401, response.getStatusCode().value());
- }
-
- @Test
- public void deleteVnf_ValidRequest_Returns202AndJobId() throws Exception {
- final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- final GenericVnf genericVnf = setUpGenericVnfInMockAai("vnfmType1");
- addSelfLinkToGenericVnf(genericVnf);
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- setUpVnfmsInMockAai();
-
- mockRestServer.expect(requestTo("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm/terminate"))
- .andRespond(withStatus(HttpStatus.ACCEPTED).contentType(MediaType.APPLICATION_JSON)
- .location(new URI("http://vnfm1:8080/vnf_lcm_op_occs/1234567")));
-
- final InlineResponse200 firstOperationQueryResponse = createOperationQueryResponse(
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.TERMINATE,
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.PROCESSING);
- mockRestServer.expect(requestTo("http://vnfm1:8080/vnf_lcm_op_occs/1234567"))
- .andRespond(withSuccess(gson.toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON));
-
- final InlineResponse200 secondOperationQueryReponse = createOperationQueryResponse(
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.TERMINATE,
- org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.COMPLETED);
- mockRestServer.expect(requestTo("http://vnfm1:8080/vnf_lcm_op_occs/1234567"))
- .andRespond(withSuccess(gson.toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON));
-
- final RequestEntity<Void> request = RequestEntity
- .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myTestVnfId"))
- .accept(MediaType.APPLICATION_JSON).header("X-ONAP-RequestId", "myRequestId")
- .header("X-ONAP-InvocationID", "myInvocationId").header("Content-Type", "application/json").build();
- final ResponseEntity<DeleteVnfResponse> deleteVnfResponse =
- restTemplate.exchange(request, DeleteVnfResponse.class);
- assertEquals(202, deleteVnfResponse.getStatusCode().value());
- assertNotNull(deleteVnfResponse.getBody().getJobId());
-
- final ResponseEntity<QueryJobResponse> firstJobQueryResponse =
- controller.jobQuery(deleteVnfResponse.getBody().getJobId(), "", "so", "1213");
- assertEquals(OperationEnum.TERMINATE, firstJobQueryResponse.getBody().getOperation());
- assertEquals(OperationStateEnum.PROCESSING, firstJobQueryResponse.getBody().getOperationState());
- assertEquals(JAN_1_2019_12_00, firstJobQueryResponse.getBody().getStartTime());
- assertEquals(JAN_1_2019_1_00, firstJobQueryResponse.getBody().getStateEnteredTime());
-
- final ResponseEntity<QueryJobResponse> secondJobQueryResponse =
- controller.jobQuery(deleteVnfResponse.getBody().getJobId(), "", "so", "1213");
- assertEquals(OperationEnum.TERMINATE, secondJobQueryResponse.getBody().getOperation());
- assertEquals(OperationStateEnum.PROCESSING, secondJobQueryResponse.getBody().getOperationState());
- assertEquals(JAN_1_2019_12_00, secondJobQueryResponse.getBody().getStartTime());
- assertEquals(JAN_1_2019_1_00, secondJobQueryResponse.getBody().getStateEnteredTime());
- }
-
- @Test
- public void deleteVnf_VnfAlreadyTerminated_Returns202AndJobId() throws Exception {
- final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- final GenericVnf genericVnf = setUpGenericVnfInMockAai("vnfmType1");
- addSelfLinkToGenericVnf(genericVnf);
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- setUpVnfmsInMockAai();
-
- mockRestServer.expect(requestTo("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm/terminate"))
- .andRespond(withStatus(HttpStatus.CONFLICT).contentType(MediaType.APPLICATION_JSON));
-
- final InlineResponse201 reponse = new InlineResponse201();
- reponse.setInstantiationState(InstantiationStateEnum.NOT_INSTANTIATED);
- mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")))
- .andRespond(withSuccess(gson.toJson(reponse), MediaType.APPLICATION_JSON));
-
- mockRestServer.expect(requestTo("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm"))
- .andRespond(withStatus(HttpStatus.NO_CONTENT).contentType(MediaType.APPLICATION_JSON));
-
- final RequestEntity<Void> request = RequestEntity
- .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myTestVnfId"))
- .accept(MediaType.APPLICATION_JSON).header("X-ONAP-RequestId", "myRequestId")
- .header("X-ONAP-InvocationID", "myInvocationId").header("Content-Type", "application/json").build();
- final ResponseEntity<DeleteVnfResponse> deleteVnfResponse =
- restTemplate.exchange(request, DeleteVnfResponse.class);
- assertEquals(202, deleteVnfResponse.getStatusCode().value());
- assertNotNull(deleteVnfResponse.getBody().getJobId());
-
- final ResponseEntity<QueryJobResponse> jobQueryResponse =
- controller.jobQuery(deleteVnfResponse.getBody().getJobId(), "", "so", "1213");
- assertEquals(OperationStateEnum.COMPLETED, jobQueryResponse.getBody().getOperationState());
- }
-
- @Test
- public void deleteVnf_GenericVnfNotFound_Returns404() throws Exception {
- final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- final RequestEntity<Void> request = RequestEntity
- .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myNonExistingVnfId"))
- .accept(MediaType.APPLICATION_JSON).header("X-ONAP-RequestId", "myRequestId")
- .header("X-ONAP-InvocationID", "myInvocationId").header("Content-Type", "application/json").build();
- final ResponseEntity<DeleteVnfResponse> deleteVnfResponse =
- restTemplate.exchange(request, DeleteVnfResponse.class);
- assertEquals(404, deleteVnfResponse.getStatusCode().value());
- assertNull(deleteVnfResponse.getBody().getJobId());
- }
-
- @Test
- public void deleteVnf_NoAssignedVnfm_Returns400() throws Exception {
- final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- setUpGenericVnfInMockAai("vnfmType");
-
- final RequestEntity<Void> request = RequestEntity
- .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myTestVnfId"))
- .accept(MediaType.APPLICATION_JSON).header("X-ONAP-RequestId", "myRequestId")
- .header("X-ONAP-InvocationID", "myInvocationId").header("Content-Type", "application/json").build();
- final ResponseEntity<DeleteVnfResponse> deleteVnfResponse =
- restTemplate.exchange(request, DeleteVnfResponse.class);
- assertEquals(400, deleteVnfResponse.getStatusCode().value());
- assertNull(deleteVnfResponse.getBody().getJobId());
- }
-
- @Test
- public void deleteVnf_ErrorStatusCodeFromVnfm_Returns500() throws Exception {
- final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- final GenericVnf genericVnf = setUpGenericVnfInMockAai("vnfmType1");
- addSelfLinkToGenericVnf(genericVnf);
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- setUpVnfmsInMockAai();
-
- mockRestServer.expect(requestTo("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm/terminate"))
- .andRespond(withStatus(HttpStatus.BAD_REQUEST).contentType(MediaType.APPLICATION_JSON));
-
- final RequestEntity<Void> request = RequestEntity
- .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myTestVnfId"))
- .accept(MediaType.APPLICATION_JSON).header("X-ONAP-RequestId", "myRequestId")
- .header("X-ONAP-InvocationID", "myInvocationId").header("Content-Type", "application/json").build();
- final ResponseEntity<DeleteVnfResponse> deleteVnfResponse =
- restTemplate.exchange(request, DeleteVnfResponse.class);
- assertEquals(500, deleteVnfResponse.getStatusCode().value());
- assertNull(deleteVnfResponse.getBody().getJobId());
-
- }
-
- private InlineResponse200 createOperationQueryResponse(
- final org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum operation,
- final org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum operationState) {
- final InlineResponse200 response = new InlineResponse200();
- response.setId("9876");
- response.setOperation(operation);
- response.setOperationState(operationState);
- response.setStartTime(JAN_1_2019_12_00);
- response.setStateEnteredTime(JAN_1_2019_1_00);
- response.setVnfInstanceId("myVnfInstanceId");
- return response;
- }
-
- private GenericVnf createGenericVnf(final String type) {
- final GenericVnf genericVnf = new GenericVnf();
- genericVnf.setVnfId("myTestVnfId");
- genericVnf.setNfType(type);
- return genericVnf;
- }
-
- private GenericVnf setUpGenericVnfInMockAai(final String type) {
- final GenericVnf genericVnf = createGenericVnf(type);
-
- doReturn(Optional.of(genericVnf)).when(aaiResourcesClient).get(eq(GenericVnf.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher("/network/generic-vnfs/generic-vnf/myTestVnfId")));
- return genericVnf;
- }
-
- private void addSelfLinkToGenericVnf(final GenericVnf vnf) {
- vnf.setSelflink("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm");
- }
-
- private void addRelationshipFromGenericVnfToVnfm(final GenericVnf genericVnf, final String vnfmId) {
- final Relationship relationshipToVnfm = new Relationship();
- relationshipToVnfm
- .setRelatedLink("/aai/" + AAIVersion.LATEST + "/external-system/esr-vnfm-list/esr-vnfm/" + vnfmId);
- relationshipToVnfm.setRelatedTo("esr-vnfm");
- final RelationshipData relationshipData = new RelationshipData();
- relationshipData.setRelationshipKey("esr-vnfm.vnfm-id");
- relationshipData.setRelationshipValue(vnfmId);
- relationshipToVnfm.getRelationshipData().add(relationshipData);
-
- final RelationshipList relationshipList = new RelationshipList();
- relationshipList.getRelationship().add(relationshipToVnfm);
- genericVnf.setRelationshipList(relationshipList);
- }
-
- private void setUpVnfmsInMockAai() {
- final EsrSystemInfo esrSystemInfo1 = new EsrSystemInfo();
- esrSystemInfo1.setServiceUrl("http://vnfm1:8080");
- esrSystemInfo1.setType("vnfmType1");
- esrSystemInfo1.setSystemType("VNFM");
- final EsrSystemInfoList esrSystemInfoList1 = new EsrSystemInfoList();
- esrSystemInfoList1.getEsrSystemInfo().add(esrSystemInfo1);
-
- final EsrVnfm esrVnfm1 = new EsrVnfm();
- esrVnfm1.setVnfmId("vnfm1");
- esrVnfm1.setEsrSystemInfoList(esrSystemInfoList1);
- esrVnfm1.setResourceVersion("1234");
-
- final EsrSystemInfo esrSystemInfo2 = new EsrSystemInfo();
- esrSystemInfo2.setServiceUrl("http://vnfm2:8080");
- esrSystemInfo2.setType("vnfmType2");
- esrSystemInfo2.setSystemType("VNFM");
- final EsrSystemInfoList esrSystemInfoList2 = new EsrSystemInfoList();
- esrSystemInfoList2.getEsrSystemInfo().add(esrSystemInfo2);
-
- final EsrVnfm esrVnfm2 = new EsrVnfm();
- esrVnfm2.setVnfmId("vnfm2");
- esrVnfm2.setEsrSystemInfoList(esrSystemInfoList2);
- esrVnfm2.setResourceVersion("1234");
-
- final EsrVnfmList esrVnfmList = new EsrVnfmList();
- esrVnfmList.getEsrVnfm().add(esrVnfm1);
- esrVnfmList.getEsrVnfm().add(esrVnfm2);
-
- doReturn(Optional.of(esrVnfm1)).when(aaiResourcesClient).get(eq(EsrVnfm.class), MockitoHamcrest
- .argThat(new AaiResourceUriMatcher("/external-system/esr-vnfm-list/esr-vnfm/vnfm1?depth=1")));
-
- doReturn(Optional.of(esrVnfm2)).when(aaiResourcesClient).get(eq(EsrVnfm.class), MockitoHamcrest
- .argThat(new AaiResourceUriMatcher("/external-system/esr-vnfm-list/esr-vnfm/vnfm2?depth=1")));
-
- doReturn(Optional.of(esrVnfmList)).when(aaiResourcesClient).get(eq(EsrVnfmList.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher("/external-system/esr-vnfm-list")));
-
- doReturn(Optional.of(esrSystemInfoList1)).when(aaiResourcesClient).get(eq(EsrSystemInfoList.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher(
- "/external-system/esr-vnfm-list/esr-vnfm/vnfm1/esr-system-info-list")));
- doReturn(Optional.of(esrSystemInfoList2)).when(aaiResourcesClient).get(eq(EsrSystemInfoList.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher(
- "/external-system/esr-vnfm-list/esr-vnfm/vnfm2/esr-system-info-list")));
- }
-
- private void setUpVimInMockAai() {
- final EsrSystemInfo esrSystemInfo = new EsrSystemInfo();
- esrSystemInfo.setServiceUrl("http://myVim:8080");
- esrSystemInfo.setType("openstack");
- esrSystemInfo.setSystemType("VIM");
- esrSystemInfo.setCloudDomain("myDomain");
- esrSystemInfo.setUserName("myUser");
- esrSystemInfo.setPassword("myPassword");
-
- final EsrSystemInfoList esrSystemInfoList = new EsrSystemInfoList();
- esrSystemInfoList.getEsrSystemInfo().add(esrSystemInfo);
-
- doReturn(Optional.of(esrSystemInfoList)).when(aaiResourcesClient).get(eq(EsrSystemInfoList.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher("/cloud-infrastructure/cloud-regions/cloud-region/"
- + CLOUD_OWNER + "/" + REGION + "/esr-system-info-list")));
- }
-
- private InlineResponse201 createCreateResponse() {
- final InlineResponse201 createResponse = new InlineResponse201();
- createResponse.setVnfdId("myTestVnfd");
- final InlineResponse201Links links = new InlineResponse201Links();
- final InlineResponse201LinksSelf self = new InlineResponse201LinksSelf();
- self.setHref("http://vnfm2:8080/vnf_instances/vnfId");
- links.setSelf(self);
- createResponse.setLinks(links);
- createResponse.setId("vnfId");
- return createResponse;
- }
-
-
- private class AaiResourceUriMatcher extends BaseMatcher<AAIBaseResourceUri<?, ?>> {
-
- final String uriAsString;
-
- public AaiResourceUriMatcher(final String uriAsString) {
- this.uriAsString = uriAsString;
- }
-
- @Override
- public boolean matches(final Object item) {
- if (item instanceof AAIBaseResourceUri<?, ?>) {
- if (uriAsString.endsWith("...")) {
- return ((AAIBaseResourceUri<?, ?>) item).build().toString()
- .startsWith(uriAsString.substring(0, uriAsString.indexOf("...")));
- }
- return ((AAIBaseResourceUri<?, ?>) item).build().toString().equals(uriAsString);
- }
- return false;
- }
-
- @Override
- public void describeTo(final Description description) {}
-
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/HealthCheckTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/HealthCheckTest.java
deleted file mode 100644
index 9fa16b5551..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/HealthCheckTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import java.net.URI;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.RequestEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class HealthCheckTest {
-
- @LocalServerPort
- private int port;
-
- private final TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
-
- @Test
- public void testHealthcheck() throws Exception {
- final RequestEntity<Void> request =
- RequestEntity.get(new URI("http://localhost:" + port + "/manage/health")).build();
- final ResponseEntity<Void> response = restTemplate.exchange(request, Void.class);
- assertEquals(200, response.getStatusCode().value());
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantControllerTest.java
deleted file mode 100644
index 99b8c71764..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003GrantControllerTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.hamcrest.MockitoHamcrest;
-import org.onap.aai.domain.yang.EsrSystemInfo;
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.GenericVnfs;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.aai.domain.yang.RelationshipData;
-import org.onap.aai.domain.yang.RelationshipList;
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantRequest.OperationEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantsAddResources;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantsAddResources.TypeEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantsLinks;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.GrantsLinksVnfLcmOpOcc;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.grant.model.InlineResponse201VimConnections;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.web.client.RestTemplate;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class Sol003GrantControllerTest {
-
- private static final String CLOUD_OWNER = "myTestCloudOwner";
- private static final String REGION = "myTestRegion";
- private static final String TENANT_ID = "myTestTenantId";
- private static final String SEPARATOR = "_";
- private static final String vimConnectionId = CLOUD_OWNER + SEPARATOR + REGION;
-
- @LocalServerPort
- private int port;
- @Autowired
- @Qualifier(CONFIGURABLE_REST_TEMPLATE)
- private RestTemplate testRestTemplate;
-
- @MockBean
- private AAIResourcesClient aaiResourcesClient;
-
- @Autowired
- private Sol003GrantController controller;
-
- @Before
- public void setUp() throws Exception {
- setUpVimInMockAai();
- }
-
- @Test
- public void grantRequest_ValidRequestInstantiate_GrantApproved() {
- final GrantRequest grantRequest = createGrantRequest("INSTANTIATE");
- setUpGenericVnfWithVnfmRelationshipInMockAai("vnfmType", "vnfm1");
- final ResponseEntity<InlineResponse201> response = controller.grantsPost(grantRequest);
- assertEquals(HttpStatus.CREATED, response.getStatusCode());
- assertEquals(1, response.getBody().getAddResources().size());
- assertNull(response.getBody().getRemoveResources());
-
- assertEquals(vimConnectionId, response.getBody().getAddResources().get(0).getVimConnectionId());
- assertEquals("myTestVnfIdOnVnfm", response.getBody().getVnfInstanceId());
- assertEquals("123456", response.getBody().getVnfLcmOpOccId());
-
- final InlineResponse201VimConnections vimConnections = response.getBody().getVimConnections().get(0);
- assertEquals(vimConnectionId, vimConnections.getVimId());
- assertEquals("OPENSTACK", vimConnections.getVimType());
- assertNotNull(vimConnections.getAccessInfo());
- assertNotNull(vimConnections.getInterfaceInfo());
- assertEquals("INSTANTIATE", grantRequest.getOperation().toString());
- }
-
- @Test
- public void getGrant_notSupported_returns501() {
- final ResponseEntity<InlineResponse201> response2 = controller.grantsGrantIdGet("myTestGrantId");
- assertEquals(HttpStatus.NOT_IMPLEMENTED, response2.getStatusCode());
- }
-
- @Test
- public void grantRequest_ValidRequestTerminate_GrantApproved() {
- final GrantRequest grantRequest = createGrantRequest("TERMINATE");
- setUpGenericVnfWithVnfmRelationshipInMockAai("vnfmType", "vnfm1");
- final ResponseEntity<InlineResponse201> response = controller.grantsPost(grantRequest);
-
- assertEquals(HttpStatus.CREATED, response.getStatusCode());
- assertNull(response.getBody().getAddResources());
- assertEquals(1, response.getBody().getRemoveResources().size());
- assertEquals(vimConnectionId, response.getBody().getRemoveResources().get(0).getVimConnectionId());
- assertEquals("myTestVnfIdOnVnfm", response.getBody().getVnfInstanceId());
- assertEquals("123456", response.getBody().getVnfLcmOpOccId());
-
- final InlineResponse201VimConnections vimConnections = response.getBody().getVimConnections().get(0);
- assertEquals(vimConnectionId, vimConnections.getVimId());
- assertEquals("OPENSTACK", vimConnections.getVimType());
- assertNotNull(vimConnections.getAccessInfo());
- assertNotNull(vimConnections.getInterfaceInfo());
- assertEquals("TERMINATE", grantRequest.getOperation().toString());
-
- }
-
- private GrantRequest createGrantRequest(final String operation) {
- final GrantRequest grantRequest = new GrantRequest();
- grantRequest.setVnfInstanceId("myTestVnfIdOnVnfm");
- grantRequest.setVnfLcmOpOccId("123456");
- grantRequest.links(new GrantsLinks()
- .vnfInstance(new GrantsLinksVnfLcmOpOcc().href("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")));
- if (operation == "INSTANTIATE") {
- grantRequest.setOperation(OperationEnum.INSTANTIATE);
- final GrantsAddResources resource = new GrantsAddResources();
- resource.setId("123");
- resource.setType(TypeEnum.COMPUTE);
- grantRequest.addAddResourcesItem(resource);
- } else if (operation == "TERMINATE") {
- grantRequest.setOperation(OperationEnum.TERMINATE);
- final GrantsAddResources resource = new GrantsAddResources();
- resource.setId("123");
- resource.setType(TypeEnum.COMPUTE);
- grantRequest.addRemoveResourcesItem(resource);
- }
-
- return grantRequest;
- }
-
- private void setUpVimInMockAai() {
- final EsrSystemInfo esrSystemInfo = new EsrSystemInfo();
- esrSystemInfo.setServiceUrl("http://myVim:8080");
- esrSystemInfo.setType("OPENSTACK");
- esrSystemInfo.setSystemType("VIM");
- esrSystemInfo.setCloudDomain("myDomain");
- esrSystemInfo.setUserName("myUser");
- esrSystemInfo.setPassword("myPassword");
-
- final EsrSystemInfoList esrSystemInfoList = new EsrSystemInfoList();
- esrSystemInfoList.getEsrSystemInfo().add(esrSystemInfo);
-
- doReturn(Optional.of(esrSystemInfoList)).when(aaiResourcesClient).get(eq(EsrSystemInfoList.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher("/cloud-infrastructure/cloud-regions/cloud-region/"
- + CLOUD_OWNER + "/" + REGION + "/esr-system-info-list")));
- }
-
- private GenericVnf createGenericVnf(final String type) {
- final GenericVnf genericVnf = new GenericVnf();
- genericVnf.setVnfId("myTestVnfId");
- genericVnf.setNfType(type);
- return genericVnf;
- }
-
- private void setUpGenericVnfWithVnfmRelationshipInMockAai(final String type, final String vnfmId) {
- final GenericVnf genericVnf = createGenericVnf(type);
-
- final Relationship relationshipToVnfm = new Relationship();
- relationshipToVnfm.setRelatedTo("tenant");
- final RelationshipData relationshipData1 = new RelationshipData();
- final RelationshipData relationshipData2 = new RelationshipData();
- final RelationshipData relationshipData3 = new RelationshipData();
-
- relationshipData1.setRelationshipKey("cloud-region.cloud-owner");
- relationshipData1.setRelationshipValue(CLOUD_OWNER);
- relationshipData2.setRelationshipKey("cloud-region.cloud-region-id");
- relationshipData2.setRelationshipValue(REGION);
- relationshipData3.setRelationshipKey("tenant.tenant-id");
- relationshipData3.setRelationshipValue(TENANT_ID);
-
- relationshipToVnfm.getRelationshipData().add(relationshipData1);
- relationshipToVnfm.getRelationshipData().add(relationshipData2);
- relationshipToVnfm.getRelationshipData().add(relationshipData3);
-
- final RelationshipList relationshipList = new RelationshipList();
- relationshipList.getRelationship().add(relationshipToVnfm);
- genericVnf.setRelationshipList(relationshipList);
-
- doReturn(Optional.of(genericVnf)).when(aaiResourcesClient).get(eq(GenericVnf.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher("/network/generic-vnfs/generic-vnf/myTestVnfId")));
-
- final List<GenericVnf> listOfGenericVnfs = new ArrayList<>();
- listOfGenericVnfs.add(genericVnf);
- final GenericVnfs genericVnfs = new GenericVnfs();
- genericVnfs.getGenericVnf().addAll(listOfGenericVnfs);
- doReturn(Optional.of(genericVnfs)).when(aaiResourcesClient).get(eq(GenericVnfs.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher(
- "/network/generic-vnfs?selflink=http%3A%2F%2Fvnfm%3A8080%2Fvnfs%2FmyTestVnfIdOnVnfm")));
- }
-
- private class AaiResourceUriMatcher extends BaseMatcher<AAIBaseResourceUri<?, ?>> {
-
- final String uriAsString;
-
- public AaiResourceUriMatcher(final String uriAsString) {
- this.uriAsString = uriAsString;
- }
-
- @Override
- public boolean matches(final Object item) {
- if (item instanceof AAIBaseResourceUri) {
- if (uriAsString.endsWith("...")) {
- return ((AAIBaseResourceUri<?, ?>) item).build().toString()
- .startsWith(uriAsString.substring(0, uriAsString.indexOf("...")));
- }
- return ((AAIBaseResourceUri<?, ?>) item).build().toString().equals(uriAsString);
- }
- return false;
- }
-
- @Override
- public void describeTo(final Description description) {}
-
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnControllerTest.java
deleted file mode 100644
index 0d5bcd2573..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/Sol003LcnControllerTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmRestTemplateConfiguration;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import javax.inject.Inject;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.hamcrest.MockitoHamcrest;
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrVnfm;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.GenericVnfs;
-import org.onap.aai.domain.yang.Relationship;
-import org.onap.aai.domain.yang.RelationshipData;
-import org.onap.aai.domain.yang.RelationshipList;
-import org.onap.aai.domain.yang.Vserver;
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri;
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.AaiHelper;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.aai.OamIpAddressSource.OamIpAddressType;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vim.model.AccessInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201Links;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201LinksSelf;
-import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201VimConnectionInfo;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs.ChangeTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationComputeResource;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationLinks;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationLinksVnfInstance;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfIdentifierCreationNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationStateEnum;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class Sol003LcnControllerTest {
-
- private static final String CLOUD_OWNER = "myTestCloudOwner";
- private static final String REGION = "myTestRegion";
- private static final String TENANT_ID = "myTestTenantId";
-
- @LocalServerPort
- private int port;
- @Autowired
- @Qualifier(VnfmRestTemplateConfiguration.SOL003_LCM_REST_TEMPLATE)
- private RestTemplate testRestTemplate;
- private MockRestServiceServer mockRestServer;
-
- @MockBean
- private AAIResourcesClient aaiResourcesClient;
-
- @Autowired
- private Sol003LcnContoller controller;
- private final Gson gson = new Gson();
-
- @Inject
- private AaiHelper aaiHelper;
-
- @Before
- public void setUp() throws Exception {
- mockRestServer = MockRestServiceServer.bindTo(testRestTemplate).build();
- }
-
- @Test
- public void lcnNotification_IdentifierCreated_Returns204() throws URISyntaxException, InterruptedException {
- final VnfIdentifierCreationNotification vnfIdentifierCreationNotification =
- new VnfIdentifierCreationNotification();
- final ResponseEntity<Void> response =
- controller.lcnVnfIdentifierCreationNotificationPost(vnfIdentifierCreationNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void lcnNotification_IdentifierDeleted_Returns204() throws URISyntaxException, InterruptedException {
- final VnfIdentifierCreationNotification vnfIdentifierCreationNotification =
- new VnfIdentifierCreationNotification();
- final ResponseEntity<Void> response =
- controller.lcnVnfIdentifierCreationNotificationPost(vnfIdentifierCreationNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void lcnNotification_InstantiateStartingOrProcessing_NoAction()
- throws URISyntaxException, InterruptedException {
- final VnfLcmOperationOccurrenceNotification startingNotification = new VnfLcmOperationOccurrenceNotification();
- startingNotification.setOperation(OperationEnum.INSTANTIATE);
- startingNotification.setOperationState(OperationStateEnum.STARTING);
-
- ResponseEntity<Void> response = controller.lcnVnfLcmOperationOccurrenceNotificationPost(startingNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
-
- verifyZeroInteractions(aaiResourcesClient);
-
- final VnfLcmOperationOccurrenceNotification processingNotification =
- new VnfLcmOperationOccurrenceNotification();
- processingNotification.setOperation(OperationEnum.INSTANTIATE);
- processingNotification.setOperationState(OperationStateEnum.STARTING);
-
- response = controller.lcnVnfLcmOperationOccurrenceNotificationPost(processingNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
-
- verifyZeroInteractions(aaiResourcesClient);
- }
-
- @Test
- public void lcnNotification_InstantiateCompleted_AaiUpdated() throws URISyntaxException, InterruptedException {
- final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification =
- createNotification(OperationEnum.INSTANTIATE);
- addVnfcsToNotification(vnfLcmOperationOccurrenceNotification, ChangeTypeEnum.ADDED);
- final InlineResponse201 vnfInstance = createVnfInstance();
-
- mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")))
- .andRespond(withSuccess(gson.toJson(vnfInstance), MediaType.APPLICATION_JSON));
-
- final GenericVnf genericVnf = createGenericVnf("vnfmType1");
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- final List<GenericVnf> listOfGenericVnfs = new ArrayList<>();
- listOfGenericVnfs.add(genericVnf);
- final GenericVnfs genericVnfs = new GenericVnfs();
- genericVnfs.getGenericVnf().addAll(listOfGenericVnfs);
- doReturn(Optional.of(genericVnfs)).when(aaiResourcesClient).get(eq(GenericVnfs.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher(
- "/network/generic-vnfs?selflink=http%3A%2F%2Fvnfm%3A8080%2Fvnfs%2FmyTestVnfIdOnVnfm")));
- final EsrVnfm vnfm = new EsrVnfm();
- vnfm.setVnfmId("vnfm1");
- final EsrSystemInfoList esrSystemInfoList = new EsrSystemInfoList();
- vnfm.setEsrSystemInfoList(esrSystemInfoList);
- doReturn(Optional.of(vnfm)).when(aaiResourcesClient).get(eq(EsrVnfm.class), MockitoHamcrest
- .argThat(new AaiResourceUriMatcher("/external-system/esr-vnfm-list/esr-vnfm/vnfm1?depth=1")));
-
- final ResponseEntity<Void> response =
- controller.lcnVnfLcmOperationOccurrenceNotificationPost(vnfLcmOperationOccurrenceNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
-
- final ArgumentCaptor<Object> bodyArgument1 = ArgumentCaptor.forClass(Object.class);
- final ArgumentCaptor<AAIResourceUri> uriArgument1 = ArgumentCaptor.forClass(AAIResourceUri.class);
-
- verify(aaiResourcesClient, timeout(1000)).update(uriArgument1.capture(), bodyArgument1.capture());
-
- assertEquals("/network/generic-vnfs/generic-vnf/myTestVnfId",
- uriArgument1.getAllValues().get(0).build().toString());
- final GenericVnf updatedGenericVnf = (GenericVnf) bodyArgument1.getAllValues().get(0);
- assertEquals("10.10.10.10", updatedGenericVnf.getIpv4OamAddress());
- assertEquals("Created", updatedGenericVnf.getOrchestrationStatus());
-
- final ArgumentCaptor<Object> bodyArgument2 = ArgumentCaptor.forClass(Object.class);
- final ArgumentCaptor<AAIResourceUri> uriArgument2 = ArgumentCaptor.forClass(AAIResourceUri.class);
- verify(aaiResourcesClient, timeout(1000)).create(uriArgument2.capture(), bodyArgument2.capture());
-
- assertEquals(
- "/cloud-infrastructure/cloud-regions/cloud-region/" + CLOUD_OWNER + "/" + REGION + "/tenants/tenant/"
- + TENANT_ID + "/vservers/vserver/myVnfc1",
- uriArgument2.getAllValues().get(0).build().toString());
-
- final Vserver vserver = (Vserver) bodyArgument2.getAllValues().get(0);
- assertEquals("myVnfc1", vserver.getVserverId());
-
- final ArgumentCaptor<AAIResourceUri> uriArgument1Connect = ArgumentCaptor.forClass(AAIResourceUri.class);
- final ArgumentCaptor<AAIResourceUri> uriArgument2Connect = ArgumentCaptor.forClass(AAIResourceUri.class);
- verify(aaiResourcesClient, timeout(1000)).connect(uriArgument1Connect.capture(), uriArgument2Connect.capture());
- assertEquals(
- "/cloud-infrastructure/cloud-regions/cloud-region/" + CLOUD_OWNER + "/" + REGION + "/tenants/tenant/"
- + TENANT_ID + "/vservers/vserver/myVnfc1",
- uriArgument1Connect.getAllValues().get(0).build().toString());
- assertEquals("/network/generic-vnfs/generic-vnf/myTestVnfId",
- uriArgument2Connect.getAllValues().get(0).build().toString());
- }
-
- @Test
- public void lcnNotification_TerminateCompleted_AaiUpdated() throws URISyntaxException, InterruptedException {
- final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification =
- createNotification(OperationEnum.TERMINATE);
- addVnfcsToNotification(vnfLcmOperationOccurrenceNotification, ChangeTypeEnum.REMOVED);
-
- final InlineResponse201 vnfInstance = createVnfInstance();
-
- mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")))
- .andRespond(withSuccess(gson.toJson(vnfInstance), MediaType.APPLICATION_JSON));
-
- mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")))
- .andRespond(withStatus(HttpStatus.NO_CONTENT).contentType(MediaType.APPLICATION_JSON));
-
- final GenericVnf genericVnf = createGenericVnf("vnfmType1");
- addRelationshipFromGenericVnfToVnfm(genericVnf, "vnfm1");
- genericVnf.setSelflink("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm");
- final List<GenericVnf> listOfGenericVnfs = new ArrayList<>();
- listOfGenericVnfs.add(genericVnf);
- final GenericVnfs genericVnfs = new GenericVnfs();
- genericVnfs.getGenericVnf().addAll(listOfGenericVnfs);
- addRelationshipFromGenericVnfToVserver(genericVnf, "myVnfc1");
-
- doReturn(Optional.of(genericVnfs)).when(aaiResourcesClient).get(eq(GenericVnfs.class),
- MockitoHamcrest.argThat(new AaiResourceUriMatcher(
- "/network/generic-vnfs?selflink=http%3A%2F%2Fvnfm%3A8080%2Fvnfs%2FmyTestVnfIdOnVnfm")));
- final EsrVnfm vnfm = new EsrVnfm();
- vnfm.setVnfmId("vnfm1");
- final EsrSystemInfoList esrSystemInfoList = new EsrSystemInfoList();
- vnfm.setEsrSystemInfoList(esrSystemInfoList);
- doReturn(Optional.of(vnfm)).when(aaiResourcesClient).get(eq(EsrVnfm.class), MockitoHamcrest
- .argThat(new AaiResourceUriMatcher("/external-system/esr-vnfm-list/esr-vnfm/vnfm1?depth=1")));
-
- final ResponseEntity<Void> response =
- controller.lcnVnfLcmOperationOccurrenceNotificationPost(vnfLcmOperationOccurrenceNotification);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
-
- final ArgumentCaptor<GenericVnf> genericVnfArgument = ArgumentCaptor.forClass(GenericVnf.class);
- final ArgumentCaptor<AAIResourceUri> updateUriArgument = ArgumentCaptor.forClass(AAIResourceUri.class);
- verify(aaiResourcesClient, timeout(10000000)).update(updateUriArgument.capture(), genericVnfArgument.capture());
- assertEquals("/network/generic-vnfs/generic-vnf/myTestVnfId", updateUriArgument.getValue().build().toString());
- assertEquals("Assigned", genericVnfArgument.getValue().getOrchestrationStatus());
-
- final ArgumentCaptor<AAIResourceUri> deleteUriArgument = ArgumentCaptor.forClass(AAIResourceUri.class);
-
- verify(aaiResourcesClient, timeout(10000000)).delete(deleteUriArgument.capture());
-
- assertEquals(
- "/cloud-infrastructure/cloud-regions/cloud-region/" + CLOUD_OWNER + "/" + REGION + "/tenants/tenant/"
- + TENANT_ID + "/vservers/vserver/myVnfc1",
- deleteUriArgument.getAllValues().get(0).build().toString());
- }
-
- private VnfLcmOperationOccurrenceNotification createNotification(final OperationEnum operation) {
- final VnfLcmOperationOccurrenceNotification notification = new VnfLcmOperationOccurrenceNotification();
- notification.setOperation(operation);
- notification.setOperationState(OperationStateEnum.COMPLETED);
-
- final LcnVnfLcmOperationOccurrenceNotificationLinksVnfInstance linkToVnfInstance =
- new LcnVnfLcmOperationOccurrenceNotificationLinksVnfInstance()
- .href("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm");
- final LcnVnfLcmOperationOccurrenceNotificationLinks operationLinks =
- new LcnVnfLcmOperationOccurrenceNotificationLinks().vnfInstance(linkToVnfInstance);
- notification.setLinks(operationLinks);
-
- return notification;
- }
-
- private void addVnfcsToNotification(final VnfLcmOperationOccurrenceNotification notification,
- final ChangeTypeEnum changeType) {
- final List<LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs> affectedVnfcs = new ArrayList<>();;
- final LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs vnfc =
- new LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs();
- vnfc.changeType(changeType);
- final LcnVnfLcmOperationOccurrenceNotificationComputeResource computeResource =
- new LcnVnfLcmOperationOccurrenceNotificationComputeResource();
- computeResource.setResourceId("myVnfc1");
- computeResource.setVimConnectionId(CLOUD_OWNER + "_" + REGION);
- vnfc.setComputeResource(computeResource);
- affectedVnfcs.add(vnfc);
- notification.setAffectedVnfcs(affectedVnfcs);
- }
-
- private InlineResponse201 createVnfInstance() {
- final InlineResponse201 vnfInstance = new InlineResponse201();
- vnfInstance.setId("myTestVnfIdOnVnfm");
- final InlineResponse201LinksSelf selfLink = new InlineResponse201LinksSelf();
- selfLink.setHref("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm");
- final InlineResponse201Links VnfInstancelinks = new InlineResponse201Links();
- VnfInstancelinks.setSelf(selfLink);
- vnfInstance.setLinks(VnfInstancelinks);
-
- final Map<String, String> vnfConfigurableProperties = new HashMap<>();
- vnfConfigurableProperties.put("vnfIpAddress", "10.10.10.10");
- vnfInstance.setVnfConfigurableProperties(vnfConfigurableProperties);
-
- final List<InlineResponse201VimConnectionInfo> vimConnectionInfo = new ArrayList<>();;
- final InlineResponse201VimConnectionInfo vimConnection = new InlineResponse201VimConnectionInfo();
- vimConnection.setVimId(CLOUD_OWNER + "_" + REGION);
- vimConnection.setId(CLOUD_OWNER + "_" + REGION);
- final AccessInfo accessInfo = new AccessInfo();
- accessInfo.setProjectId(TENANT_ID);
- vimConnection.setAccessInfo(accessInfo);
- vimConnectionInfo.add(vimConnection);
- vnfInstance.setVimConnectionInfo(vimConnectionInfo);
-
- final OamIpAddressSource oamIpAddressSource =
- new OamIpAddressSource(OamIpAddressType.CONFIGURABLE_PROPERTY, "vnfIpAddress");
- aaiHelper.setOamIpAddressSource("myTestVnfIdOnVnfm", oamIpAddressSource);
- return vnfInstance;
- }
-
- private GenericVnf createGenericVnf(final String type) {
- final GenericVnf genericVnf = new GenericVnf();
- genericVnf.setVnfId("myTestVnfId");
- genericVnf.setNfType(type);
- return genericVnf;
- }
-
- private void addRelationshipFromGenericVnfToVnfm(final GenericVnf genericVnf, final String vnfmId) {
- final Relationship relationshipToVnfm = new Relationship();
- relationshipToVnfm.setRelatedLink("/aai/v15/external-system/esr-vnfm-list/esr-vnfm/" + vnfmId);
- relationshipToVnfm.setRelatedTo("esr-vnfm");
- final RelationshipData relationshipData = new RelationshipData();
- relationshipData.setRelationshipKey("esr-vnfm.vnfm-id");
- relationshipData.setRelationshipValue(vnfmId);
- relationshipToVnfm.getRelationshipData().add(relationshipData);
-
- if (genericVnf.getRelationshipList() == null) {
- final RelationshipList relationshipList = new RelationshipList();
- genericVnf.setRelationshipList(relationshipList);
- }
- genericVnf.getRelationshipList().getRelationship().add(relationshipToVnfm);
- }
-
- private void addRelationshipFromGenericVnfToVserver(final GenericVnf genericVnf, final String vserverId) {
- final Relationship relationshipToVserver = new Relationship();
- relationshipToVserver.setRelatedTo("vserver");
- final RelationshipData relationshipData1 = new RelationshipData();
- relationshipData1.setRelationshipKey("vserver.vserver-id");
- relationshipData1.setRelationshipValue(vserverId);
- relationshipToVserver.getRelationshipData().add(relationshipData1);
- final RelationshipData relationshipData2 = new RelationshipData();
- relationshipData2.setRelationshipKey("cloud-region.cloud-owner");
- relationshipData2.setRelationshipValue(CLOUD_OWNER);
- relationshipToVserver.getRelationshipData().add(relationshipData2);
- final RelationshipData relationshipData3 = new RelationshipData();
- relationshipData3.setRelationshipKey("cloud-region.cloud-region-id");
- relationshipData3.setRelationshipValue(REGION);
- relationshipToVserver.getRelationshipData().add(relationshipData3);
- final RelationshipData relationshipData4 = new RelationshipData();
- relationshipData4.setRelationshipKey("tenant.tenant-id");
- relationshipData4.setRelationshipValue(TENANT_ID);
- relationshipToVserver.getRelationshipData().add(relationshipData4);
-
- if (genericVnf.getRelationshipList() == null) {
- final RelationshipList relationshipList = new RelationshipList();
- genericVnf.setRelationshipList(relationshipList);
- }
- genericVnf.getRelationshipList().getRelationship().add(relationshipToVserver);
- }
-
- private class AaiResourceUriMatcher extends BaseMatcher<AAIBaseResourceUri<?, ?>> {
-
- final String uriAsString;
-
- public AaiResourceUriMatcher(final String uriAsString) {
- this.uriAsString = uriAsString;
- }
-
- @Override
- public boolean matches(final Object item) {
- if (item instanceof AAIBaseResourceUri<?, ?>) {
- if (uriAsString.endsWith("...")) {
- return ((AAIBaseResourceUri<?, ?>) item).build().toString()
- .startsWith(uriAsString.substring(0, uriAsString.indexOf("...")));
- }
- return ((AAIBaseResourceUri<?, ?>) item).build().toString().equals(uriAsString);
- }
- return false;
- }
-
- @Override
- public void describeTo(final Description description) {}
-
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/TestApplication.java b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/TestApplication.java
deleted file mode 100755
index b59bc025e8..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/TestApplication.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.lcm.rest;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.cache.annotation.EnableCaching;
-
-@EnableCaching
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-public class TestApplication {
-
- public static void main(final String[] args) {
- new SpringApplication(TestApplication.class).run(args);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/resources/application.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/resources/application.yaml
deleted file mode 100644
index cdb6662191..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-adapter/src/test/resources/application.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright © 2019 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- security:
- usercredentials:
- - username: test
- password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
- role: BPEL-Client
- - username: vnfm
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- main:
- allow-bean-definition-overriding: true
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
-
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- endpoint: https://aai.onap:8443
- version: v15
-
-sdc:
- username: sdcUser
- password: sdcPassword
- key: adadadadad
- endpoint: http://sdc.onap/1234A
-
-
-vnfmadapter:
- endpoint: https://so-vnfm-adapter.onap:30406
-
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use.
-
-etsi-catalog-manager:
- vnfpkgm:
- endpoint: http://msb-iag.onap:80/api/vnfpkgm/v1
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/pom.xml
deleted file mode 100644
index b636f6818c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/pom.xml
+++ /dev/null
@@ -1,221 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-lcm-api</artifactId>
- <name>ETSI SOL003 Life Cycle Management Adapter API</name>
- <build>
- <plugins>
- <plugin>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <version>${version-swagger-codegen}</version>
- <executions>
- <execution>
- <id>vnfmadapter</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/etsisol003adapter.yaml</inputSpec>
- <language>java</language>
- <library>retrofit2</library>
- <output>${project.build.directory}/generated-sources/etsisol003adapter</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.lcm.v1.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.lcm.v1.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <jackson>true</jackson>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- <execution>
- <id>sol003-vnf-lcn-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/sol003-vnf-lcn</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.lcm.lcn.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.lcm.lcn.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- <execution>
- <id>sol003-vnf-grant-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/sol003-vnf-grant</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.lcm.grant.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.lcm.grant.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <generateSupportingFiles>false</generateSupportingFiles>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${project.basedir}/target/generated-sources/vnfmadapter/src/gen/java/main</source>
- <source>${project.basedir}/target/generated-sources/sol003-vnf-lcn/src/gen/java/main</source>
- <source>${project.basedir}/target/generated-sources/sol003-vnf-grant/src/gen/java/main</source>
- <source>${project.basedir}/target/generated-sources/etsisol003adapter/src/gen/java/main</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <goals>
- <goal>generate</goal>
- </goals>
- <versionRange>[2.2.0,)</versionRange>
- </pluginExecutionFilter>
- <action>
- <execute>
- <runOnIncremental>false</runOnIncremental>
- </execute>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <dependencies>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-gson</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>retrofit</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-scalars</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.oltu.oauth2</groupId>
- <artifactId>org.apache.oltu.oauth2.client</artifactId>
- <version>${oltu-version}</version>
- </dependency>
- <dependency>
- <groupId>io.gsonfire</groupId>
- <artifactId>gson-fire</artifactId>
- <version>${gson-fire-version}</version>
- </dependency>
- <dependency>
- <groupId>org.threeten</groupId>
- <artifactId>threetenbp</artifactId>
- <version>${threetenbp-version}</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava2</groupId>
- <artifactId>rxjava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>adapter-rxjava2</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>${okio-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json
deleted file mode 100644
index d3b6ebaa7e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json
+++ /dev/null
@@ -1,1897 +0,0 @@
-{
- "swagger" : "2.0",
- "info" : {
- "description" : "SOL003 - VNF Lifecycle Management Notification interface\n\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\n\nIn clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based filtering mechanism is defined. This mechanism is currently not included in the corresponding OpenAPI design for this GS version. Changes to the attribute-based filtering mechanism are being considered in v2.5.1 of this GS for inclusion in the corresponding future ETSI NFV OpenAPI design.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n",
- "version" : "1.1.1",
- "title" : "SOL003 - VNF Lifecycle Management Notification interface",
- "license" : {
- "name" : "ETSI Forge copyright notice",
- "url" : "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- }
- },
- "basePath" : "/so/vnfm-adapter/v1/",
- "schemes" : [ "https" ],
- "consumes" : [ "application/json" ],
- "produces" : [ "application/json" ],
- "paths" : {
- "/lcn/VnfLcmOperationOccurrenceNotification" : {
- "post" : {
- "description" : "Notify\n\nThe POST method delivers a notification from the server to the client.\n",
- "parameters" : [ {
- "in" : "body",
- "name" : "VnfLcmOperationOccurrenceNotification",
- "description" : "A notification about on-boarding of a VNF package.",
- "required" : true,
- "schema" : {
- "$ref" : "#/definitions/VnfLcmOperationOccurrenceNotification"
- }
- }, {
- "name" : "Authorization",
- "in" : "header",
- "description" : "The authorization token for the request. Reference: IETF RFC 7235\n",
- "required" : false,
- "type" : "string"
- }, {
- "name" : "Content-Type",
- "in" : "header",
- "description" : "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "required" : true,
- "type" : "string"
- } ],
- "responses" : {
- "204" : {
- "description" : "No Content\nThe notification was delivered successfully.\n",
- "headers" : {
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- }
- },
- "400" : {
- "description" : "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "401" : {
- "description" : "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "403" : {
- "description" : "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "404" : {
- "description" : "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "405" : {
- "description" : "Method Not Allowed\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "406" : {
- "description" : "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case. \n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "500" : {
- "description" : "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "503" : {
- "description" : "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- }
- }
- }
- },
- "/lcn/VnfIdentifierCreationNotification" : {
- "post" : {
- "description" : "Notify\n\nThe POST method delivers a notification from the server to the client.\n",
- "parameters" : [ {
- "in" : "body",
- "name" : "VnfIdentifierCreationNotification",
- "description" : "A notification about the creation of a VNF identifier and the related VNF instance resource.\n",
- "required" : true,
- "schema" : {
- "$ref" : "#/definitions/VnfIdentifierCreationNotification"
- }
- }, {
- "name" : "Authorization",
- "in" : "header",
- "description" : "The authorization token for the request. Reference: IETF RFC 7235\n",
- "required" : false,
- "type" : "string"
- }, {
- "name" : "Content-Type",
- "in" : "header",
- "description" : "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "required" : true,
- "type" : "string"
- } ],
- "responses" : {
- "204" : {
- "description" : "No Content\nThe notification was delivered successfully.\n",
- "headers" : {
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- }
- },
- "400" : {
- "description" : "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "401" : {
- "description" : "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "403" : {
- "description" : "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "404" : {
- "description" : "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "405" : {
- "description" : "Method Not Allowed\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "406" : {
- "description" : "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case. \n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "500" : {
- "description" : "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "503" : {
- "description" : "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- }
- }
- }
- },
- "/lcn/VnfIdentifierDeletionNotification" : {
- "post" : {
- "description" : "Notify\n\nThe POST method delivers a notification from the server to the client.\n",
- "parameters" : [ {
- "in" : "body",
- "name" : "VnfIdentifierDeletionNotification",
- "description" : "A notification about the deletion of a VNF identifier and the related VNF instance resource.\n",
- "required" : true,
- "schema" : {
- "$ref" : "#/definitions/VnfIdentifierDeletionNotification"
- }
- }, {
- "name" : "Authorization",
- "in" : "header",
- "description" : "The authorization token for the request. Reference: IETF RFC 7235\n",
- "required" : false,
- "type" : "string"
- }, {
- "name" : "Content-Type",
- "in" : "header",
- "description" : "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "required" : true,
- "type" : "string"
- } ],
- "responses" : {
- "204" : {
- "description" : "No Content\nThe notification was delivered successfully.\n",
- "headers" : {
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- }
- },
- "400" : {
- "description" : "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "401" : {
- "description" : "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- },
- "WWW-Authenticate" : {
- "type" : "string",
- "description" : "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n"
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "403" : {
- "description" : "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "404" : {
- "description" : "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "405" : {
- "description" : "Method Not Allowed\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "406" : {
- "description" : "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case. \n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "500" : {
- "description" : "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- },
- "503" : {
- "description" : "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers" : {
- "Content-Type" : {
- "type" : "string",
- "description" : "The MIME type of the body of the response."
- }
- },
- "schema" : {
- "type" : "object",
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n"
- }
- }
- }
- }
- }
- },
- "definitions" : {
- "lcnVnfLcmOperationOccurrenceNotification_changedInfo_vimConnectionInfo" : {
- "required" : [ "id", "vimType" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "vimId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "vimType" : {
- "type" : "string",
- "description" : "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n"
- },
- "interfaceInfo" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "accessInfo" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "extra" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- }
- },
- "description" : "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "example" : {
- "vimType" : "vimType",
- "vimId" : "vimId",
- "extra" : "{}",
- "interfaceInfo" : "{}",
- "id" : "id",
- "accessInfo" : "{}"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_computeResource" : {
- "required" : [ "resourceId", "vimConnectionId" ],
- "properties" : {
- "vimConnectionId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "resourceProviderId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "resourceId" : {
- "type" : "string",
- "description" : "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n"
- },
- "vimLevelResourceType" : {
- "type" : "string",
- "description" : "Type of the resource in the scope of the VIM or the resource provider.\n"
- }
- },
- "description" : "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "example" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_affectedVnfcs" : {
- "required" : [ "changeType", "computeResource", "id", "vduId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- },
- "vduId" : {
- "type" : "string",
- "description" : "An identifier that is unique within a VNF descriptor.\n"
- },
- "changeType" : {
- "type" : "string",
- "description" : "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n",
- "enum" : [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY" ]
- },
- "computeResource" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_computeResource"
- },
- "metadata" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "affectedVnfcCpIds" : {
- "type" : "array",
- "description" : "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n",
- "items" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- }
- },
- "addedStorageResourceIds" : {
- "type" : "array",
- "description" : "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n",
- "items" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- }
- },
- "removedStorageResourceIds" : {
- "type" : "array",
- "description" : "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n",
- "items" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- }
- }
- },
- "description" : "This type provides information about added, deleted, modified and temporary VNFCs. \n",
- "example" : {
- "addedStorageResourceIds" : [ "addedStorageResourceIds", "addedStorageResourceIds" ],
- "metadata" : "{}",
- "changeType" : "ADDED",
- "affectedVnfcCpIds" : [ "affectedVnfcCpIds", "affectedVnfcCpIds" ],
- "id" : "id",
- "vduId" : "vduId",
- "computeResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "removedStorageResourceIds" : [ "removedStorageResourceIds", "removedStorageResourceIds" ]
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_changedExtConnectivity" : {
- "required" : [ "id", "resourceHandle" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "resourceHandle" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_computeResource"
- },
- "extLinkPorts" : {
- "type" : "array",
- "description" : "Link ports of this VL.\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_extLinkPorts"
- }
- }
- },
- "example" : {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "extLinkPorts" : [ {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- }, {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- } ],
- "id" : "id"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_error" : {
- "required" : [ "detail", "status" ],
- "properties" : {
- "type" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n"
- },
- "title" : {
- "type" : "string",
- "description" : "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n"
- },
- "status" : {
- "type" : "integer",
- "description" : "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n"
- },
- "detail" : {
- "type" : "string",
- "description" : "A human-readable explanation specific to this occurrence of the problem.\n"
- },
- "instance" : {
- "type" : "string",
- "format" : "URI",
- "description" : "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n"
- }
- },
- "description" : "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "example" : {
- "instance" : "instance",
- "detail" : "detail",
- "type" : "type",
- "title" : "title",
- "status" : 0
- }
- },
- "VnfLcmOperationOccurrenceNotification" : {
- "type" : "object",
- "required" : [ "_links", "id", "isAutomaticInvocation", "notificationStatus", "notificationType", "operation", "operationState", "subscriptionId", "timeStamp", "vnfInstanceId", "vnfLcmOpOccId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "notificationType" : {
- "type" : "string",
- "description" : "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n",
- "enum" : [ "VnfLcmOperationOccurrenceNotification" ]
- },
- "subscriptionId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "timeStamp" : {
- "type" : "string",
- "format" : "date-time",
- "description" : "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n"
- },
- "notificationStatus" : {
- "type" : "string",
- "description" : "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n",
- "enum" : [ "START", "RESULT" ]
- },
- "operationState" : {
- "type" : "string",
- "description" : "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "enum" : [ "STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK" ]
- },
- "vnfInstanceId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "operation" : {
- "type" : "string",
- "description" : "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. \n",
- "enum" : [ "INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO" ]
- },
- "isAutomaticInvocation" : {
- "type" : "boolean",
- "description" : "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n"
- },
- "vnfLcmOpOccId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "affectedVnfcs" : {
- "type" : "array",
- "description" : "Information about VNFC instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_affectedVnfcs"
- }
- },
- "affectedVirtualLinks" : {
- "type" : "array",
- "description" : "Information about VL instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_affectedVirtualLinks"
- }
- },
- "affectedVirtualStorages" : {
- "type" : "array",
- "description" : "Information about virtualised storage instances that were affected during the lifecycle operation. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM operation occurrence and by any of the error handling procedures for that operation occurrence.\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_affectedVirtualStorages"
- }
- },
- "changedInfo" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_changedInfo"
- },
- "changedExtConnectivity" : {
- "type" : "array",
- "description" : "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" is set to \"CHANGE_EXT_CONN\". Shall be absent otherwise.\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_changedExtConnectivity"
- }
- },
- "error" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_error"
- },
- "_links" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links"
- }
- },
- "description" : "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the VnfLcmOpOcc resource before the notification about the state change is sent.\n",
- "example" : {
- "notificationStatus" : "START",
- "affectedVirtualLinks" : [ {
- "metadata" : "{}",
- "networkResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "changeType" : "ADDED",
- "virtualLinkDescId" : "virtualLinkDescId",
- "id" : "id"
- }, {
- "metadata" : "{}",
- "networkResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "changeType" : "ADDED",
- "virtualLinkDescId" : "virtualLinkDescId",
- "id" : "id"
- } ],
- "affectedVirtualStorages" : [ {
- "metadata" : "{}",
- "virtualStorageDescId" : "virtualStorageDescId",
- "changeType" : "ADDED",
- "id" : "id",
- "storageResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- }
- }, {
- "metadata" : "{}",
- "virtualStorageDescId" : "virtualStorageDescId",
- "changeType" : "ADDED",
- "id" : "id",
- "storageResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- }
- } ],
- "affectedVnfcs" : [ {
- "addedStorageResourceIds" : [ "addedStorageResourceIds", "addedStorageResourceIds" ],
- "metadata" : "{}",
- "changeType" : "ADDED",
- "affectedVnfcCpIds" : [ "affectedVnfcCpIds", "affectedVnfcCpIds" ],
- "id" : "id",
- "vduId" : "vduId",
- "computeResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "removedStorageResourceIds" : [ "removedStorageResourceIds", "removedStorageResourceIds" ]
- }, {
- "addedStorageResourceIds" : [ "addedStorageResourceIds", "addedStorageResourceIds" ],
- "metadata" : "{}",
- "changeType" : "ADDED",
- "affectedVnfcCpIds" : [ "affectedVnfcCpIds", "affectedVnfcCpIds" ],
- "id" : "id",
- "vduId" : "vduId",
- "computeResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "removedStorageResourceIds" : [ "removedStorageResourceIds", "removedStorageResourceIds" ]
- } ],
- "_links" : {
- "subscription" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfLcmOpOcc" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfInstance" : {
- "href" : "http://example.com/aeiou"
- }
- },
- "operationState" : "STARTING",
- "notificationType" : "VnfLcmOperationOccurrenceNotification",
- "error" : {
- "instance" : "instance",
- "detail" : "detail",
- "type" : "type",
- "title" : "title",
- "status" : 0
- },
- "timeStamp" : "2000-01-23T04:56:07.000+00:00",
- "vnfInstanceId" : "vnfInstanceId",
- "vnfLcmOpOccId" : "vnfLcmOpOccId",
- "changedInfo" : {
- "vnfProductName" : "vnfProductName",
- "metadata" : "{}",
- "extensions" : "{}",
- "vimConnectionInfo" : [ {
- "vimType" : "vimType",
- "vimId" : "vimId",
- "extra" : "{}",
- "interfaceInfo" : "{}",
- "id" : "id",
- "accessInfo" : "{}"
- }, {
- "vimType" : "vimType",
- "vimId" : "vimId",
- "extra" : "{}",
- "interfaceInfo" : "{}",
- "id" : "id",
- "accessInfo" : "{}"
- } ],
- "vnfdVersion" : "vnfdVersion",
- "vnfProvider" : "vnfProvider",
- "vnfConfigurableProperties" : "{}",
- "vnfPkgId" : "vnfPkgId",
- "vnfdId" : "vnfdId",
- "vnfInstanceName" : "vnfInstanceName",
- "vnfInstanceDescription" : "vnfInstanceDescription",
- "vnfSoftwareVersion" : "vnfSoftwareVersion"
- },
- "changedExtConnectivity" : [ {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "extLinkPorts" : [ {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- }, {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- } ],
- "id" : "id"
- }, {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "extLinkPorts" : [ {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- }, {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- } ],
- "id" : "id"
- } ],
- "id" : "id",
- "subscriptionId" : "subscriptionId",
- "isAutomaticInvocation" : true,
- "operation" : "INSTANTIATE"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_extLinkPorts" : {
- "required" : [ "id", "resourceHandle" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "resourceHandle" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_computeResource"
- },
- "cpInstanceId" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- }
- },
- "description" : "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL. \n",
- "example" : {
- "resourceHandle" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "id" : "id",
- "cpInstanceId" : "cpInstanceId"
- }
- },
- "VnfIdentifierCreationNotification" : {
- "type" : "object",
- "required" : [ "_links", "id", "notificationType", "timeStamp", "vnfInstanceId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "notificationType" : {
- "type" : "string",
- "description" : "Discriminator for the different notification types. Shall be set to \"VnfIdentifierCreationNotification\" for this notification type.\n",
- "enum" : [ "VnfIdentifierCreationNotification" ]
- },
- "subscriptionId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "timeStamp" : {
- "type" : "string",
- "format" : "date-time",
- "description" : "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n"
- },
- "vnfInstanceId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "_links" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links"
- }
- },
- "description" : "This type represents a VNF identifier creation notification, which informs the receiver of the creation of a new VNF instance resource and the associated VNF instance identifier. This notification shall be triggered by the VNFM when it has created a VNF instance resource and the associated VNF instance identifier.\n",
- "example" : {
- "timeStamp" : "2000-01-23T04:56:07.000+00:00",
- "vnfInstanceId" : "vnfInstanceId",
- "_links" : {
- "subscription" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfLcmOpOcc" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfInstance" : {
- "href" : "http://example.com/aeiou"
- }
- },
- "id" : "id",
- "notificationType" : "VnfIdentifierCreationNotification",
- "subscriptionId" : "subscriptionId"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification__links_vnfInstance" : {
- "required" : [ "href" ],
- "properties" : {
- "href" : {
- "type" : "string",
- "format" : "url",
- "description" : "URI of the referenced resource.\n"
- }
- },
- "description" : "This type represents a link to a resource.\n",
- "example" : {
- "href" : "http://example.com/aeiou"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_changedInfo" : {
- "properties" : {
- "vnfInstanceName" : {
- "type" : "string",
- "description" : "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n"
- },
- "vnfInstanceDescription" : {
- "type" : "string",
- "description" : "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n"
- },
- "vnfConfigurableProperties" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "metadata" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "extensions" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- },
- "vimConnectionInfo" : {
- "type" : "array",
- "description" : "If present, this attribute signals modifications of certain entries in the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n",
- "items" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_changedInfo_vimConnectionInfo"
- }
- },
- "vnfPkgId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "vnfdId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "vnfProvider" : {
- "type" : "string",
- "description" : "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n"
- },
- "vnfProductName" : {
- "type" : "string",
- "description" : "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n"
- },
- "vnfSoftwareVersion" : {
- "type" : "string",
- "description" : "A Version.\n"
- },
- "vnfdVersion" : {
- "type" : "string",
- "description" : "A Version.\n"
- }
- },
- "description" : "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n",
- "example" : {
- "vnfProductName" : "vnfProductName",
- "metadata" : "{}",
- "extensions" : "{}",
- "vimConnectionInfo" : [ {
- "vimType" : "vimType",
- "vimId" : "vimId",
- "extra" : "{}",
- "interfaceInfo" : "{}",
- "id" : "id",
- "accessInfo" : "{}"
- }, {
- "vimType" : "vimType",
- "vimId" : "vimId",
- "extra" : "{}",
- "interfaceInfo" : "{}",
- "id" : "id",
- "accessInfo" : "{}"
- } ],
- "vnfdVersion" : "vnfdVersion",
- "vnfProvider" : "vnfProvider",
- "vnfConfigurableProperties" : "{}",
- "vnfPkgId" : "vnfPkgId",
- "vnfdId" : "vnfdId",
- "vnfInstanceName" : "vnfInstanceName",
- "vnfInstanceDescription" : "vnfInstanceDescription",
- "vnfSoftwareVersion" : "vnfSoftwareVersion"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_affectedVirtualStorages" : {
- "required" : [ "changeType", "id", "storageResource", "virtualStorageDescId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- },
- "virtualStorageDescId" : {
- "type" : "string",
- "description" : "An identifier that is unique within a VNF descriptor.\n"
- },
- "changeType" : {
- "type" : "string",
- "description" : "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n",
- "enum" : [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY" ]
- },
- "storageResource" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_computeResource"
- },
- "metadata" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- }
- },
- "description" : "This type provides information about added, deleted, modified and temporary virtual storage resources.\n",
- "example" : {
- "metadata" : "{}",
- "virtualStorageDescId" : "virtualStorageDescId",
- "changeType" : "ADDED",
- "id" : "id",
- "storageResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- }
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification__links" : {
- "required" : [ "subscription", "vnfInstance" ],
- "properties" : {
- "vnfInstance" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links_vnfInstance"
- },
- "subscription" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links_vnfInstance"
- },
- "vnfLcmOpOcc" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links_vnfInstance"
- }
- },
- "description" : "This type represents the links to resources that a notification can contain.\n",
- "example" : {
- "subscription" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfLcmOpOcc" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfInstance" : {
- "href" : "http://example.com/aeiou"
- }
- }
- },
- "VnfIdentifierDeletionNotification" : {
- "type" : "object",
- "required" : [ "_links", "id", "notificationType", "timeStamp", "vnfInstanceId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "notificationType" : {
- "type" : "string",
- "description" : "Discriminator for the different notification types. Shall be set to \"VnfIdentifierDeletionNotification\" for this notification type.\n",
- "enum" : [ "VnfIdentifierDeletionNotification" ]
- },
- "subscriptionId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "timeStamp" : {
- "type" : "string",
- "format" : "date-time",
- "description" : "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n"
- },
- "vnfInstanceId" : {
- "type" : "string",
- "description" : "An identifier with the intention of being globally unique.\n"
- },
- "_links" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification__links"
- }
- },
- "description" : "This type represents a VNF identifier deletion notification, which informs the receiver of the deletion of a new VNF instance resource and the associated VNF instance identifier. This notification shall be triggered by the VNFM when it has deleted a VNF instance resource and the associated VNF instance identifier.\n",
- "example" : {
- "timeStamp" : "2000-01-23T04:56:07.000+00:00",
- "vnfInstanceId" : "vnfInstanceId",
- "_links" : {
- "subscription" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfLcmOpOcc" : {
- "href" : "http://example.com/aeiou"
- },
- "vnfInstance" : {
- "href" : "http://example.com/aeiou"
- }
- },
- "id" : "id",
- "notificationType" : "VnfIdentifierDeletionNotification",
- "subscriptionId" : "subscriptionId"
- }
- },
- "lcnVnfLcmOperationOccurrenceNotification_affectedVirtualLinks" : {
- "required" : [ "changeType", "id", "networkResource", "virtualLinkDescId" ],
- "properties" : {
- "id" : {
- "type" : "string",
- "description" : "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n"
- },
- "virtualLinkDescId" : {
- "type" : "string",
- "description" : "An identifier that is unique within a VNF descriptor.\n"
- },
- "changeType" : {
- "type" : "string",
- "description" : "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n",
- "enum" : [ "ADDED", "REMOVED", "MODIFIED", "TEMPORARY", "LINK_PORT_ADDED", "LINK_PORT_REMOVED" ]
- },
- "networkResource" : {
- "$ref" : "#/definitions/lcnVnfLcmOperationOccurrenceNotification_computeResource"
- },
- "metadata" : {
- "type" : "object",
- "description" : "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159. \n",
- "properties" : { }
- }
- },
- "description" : "This type provides information about added, deleted, modified and temporary VLs.\n",
- "example" : {
- "metadata" : "{}",
- "networkResource" : {
- "resourceId" : "resourceId",
- "vimConnectionId" : "vimConnectionId",
- "vimLevelResourceType" : "vimLevelResourceType",
- "resourceProviderId" : "resourceProviderId"
- },
- "changeType" : "ADDED",
- "virtualLinkDescId" : "virtualLinkDescId",
- "id" : "id"
- }
- }
- },
- "externalDocs" : {
- "description" : "ETSI GS NFV-SOL 003 V2.4.1",
- "url" : "http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.04.01_60/gs_NFV-SOL003v020401p.pdf"
- }
-} \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json
deleted file mode 100644
index aab56ee2af..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json
+++ /dev/null
@@ -1,2774 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "version": "1.1.1",
- "title": "SOL003 - VNF Lifecycle Operation Granting interface",
- "description": "SOL003 - VNF Lifecycle Operation Granting interface\n\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\n\nIn clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based filtering mechanism is defined. This mechanism is currently not included in the corresponding OpenAPI design for this GS version. Changes to the attribute-based filtering mechanism are being considered in v2.5.1 of this GS for inclusion in the corresponding future ETSI NFV OpenAPI design.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n",
- "license": {
- "name": "ETSI Forge copyright notice",
- "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- }
- },
- "externalDocs": {
- "description": "ETSI GS NFV-SOL 003 V2.4.1",
- "url": "http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.04.01_60/gs_NFV-SOL003v020401p.pdf"
- },
- "basePath": "/grant/v1",
- "schemes": [
- "https"
- ],
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
- "paths": {
- "/grants": {
- "post": {
- "description": "Grant Lifecycle Operation\n\nThe POST method requests a grant for a particular VNF lifecycle operation.\n",
- "parameters": [
- {
- "name": "GrantRequest",
- "in": "body",
- "required": true,
- "schema": {
- "description": "This type represents a grant request.\n",
- "type": "object",
- "required": [
- "vnfInstanceId",
- "vnfLcmOpOccId",
- "vnfdId",
- "operation",
- "isAutomaticInvocation",
- "_links"
- ],
- "properties": {
- "vnfInstanceId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLcmOpOccId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "flavourId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "operation": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": [
- "INSTANTIATE",
- "SCALE",
- "SCALE_TO_LEVEL",
- "CHANGE_FLAVOUR",
- "TERMINATE",
- "HEAL",
- "OPERATE",
- "CHANGE_EXT_CONN",
- "MODIFY_INFO"
- ]
- },
- "isAutomaticInvocation": {
- "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n",
- "type": "boolean"
- },
- "instantiationLevelId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "addResources": {
- "description": "List of resource definitions in the VNFD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource. If the granting request is for InstantiateVNF, either instantiationLevel or addResources shall be present.\n",
- "type": "array",
- "items": {
- "description": "This type provides information of an existing or proposed resource used by the VNF.\n",
- "type": "object",
- "required": [
- "id",
- "type"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "type": {
- "description": "Type of the resource definition referenced. Permitted values: * COMPUTE * VL * STORAGE * LINKPORT\n",
- "type": "string",
- "enum": [
- "COMPUTE",
- "VL",
- "STORAGE",
- "LINKPORT"
- ]
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resourceTemplateId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resource": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "tempResources": {
- "description": "List of resource definitions in the VNFD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request, with one entry per resource. The NFVO will assume that the VNFM will be responsible to both allocate and release the temporary resource during the runtime of the LCM operation. This means, the resource can be allocated and consumed after the \"start\" notification for the LCM operation is sent by the VNFM, and the resource will be released before the \"result\" notification of the VNF LCM operation is sent by the VNFM.\n",
- "type": "array",
- "items": {
- "description": "This type provides information of an existing or proposed resource used by the VNF.\n",
- "type": "object",
- "required": [
- "id",
- "type"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "type": {
- "description": "Type of the resource definition referenced. Permitted values: * COMPUTE * VL * STORAGE * LINKPORT\n",
- "type": "string",
- "enum": [
- "COMPUTE",
- "VL",
- "STORAGE",
- "LINKPORT"
- ]
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resourceTemplateId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resource": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "removeResources": {
- "description": "Provides the definitions of resources to be removed by the LCM operation which is related to this grant request, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type provides information of an existing or proposed resource used by the VNF.\n",
- "type": "object",
- "required": [
- "id",
- "type"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "type": {
- "description": "Type of the resource definition referenced. Permitted values: * COMPUTE * VL * STORAGE * LINKPORT\n",
- "type": "string",
- "enum": [
- "COMPUTE",
- "VL",
- "STORAGE",
- "LINKPORT"
- ]
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resourceTemplateId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resource": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "updateResources": {
- "description": "Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type provides information of an existing or proposed resource used by the VNF.\n",
- "type": "object",
- "required": [
- "id",
- "type"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "type": {
- "description": "Type of the resource definition referenced. Permitted values: * COMPUTE * VL * STORAGE * LINKPORT\n",
- "type": "string",
- "enum": [
- "COMPUTE",
- "VL",
- "STORAGE",
- "LINKPORT"
- ]
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resourceTemplateId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "resource": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "placementConstraints": {
- "description": "Placement constraints that the VNFM may send to the NFVO in order to influence the resource placement decision. If sent, the NFVO shall take the constraints into consideration when making resource placement decisions, and shall reject the grant if they cannot be honoured. The affinity/anti-affinity rules defined in the VNFD , and the placement constraints in the GrantVnfLifecycleOperation as defined in this clause should be conflict-free. In case of conflicts, the placement constraints in the GrantVnfLifecycleOperation shall take precedence. Passing constraints allows the VNFM or the lifecycle management scripts to influence resource placement decisions by the NFVO to ensure VNF properties such as performance or fault tolerance.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a resource placement constraint. A set of such constraints may be sent by the VNFM to the NFVO to influence the resource placement decisions made by the NFVO as part of the granting process. A placement constraint defines a condition to the placement of new resources, considering other new resources as well as existing resources. EXAMPLE: The following rules influence the placement of a set of resources such that they are placed in the same Network Function Virtualisation Infrastructure Point of Presence (NFVI-PoP) but in different resource zones: {type=\"affinity\"; scope=\"NFVI_POP\"; {resource1,resource2}} {type=\"anti-affinity\"; scope=\"ZONE\"; {resource1,resource2}}\n",
- "type": "object",
- "required": [
- "affinityOrAntiAffinity",
- "scope",
- "resource"
- ],
- "properties": {
- "affinityOrAntiAffinity": {
- "description": "The type of the constraint. Permitted values: * AFFINITY * ANTI_AFFINITY\n",
- "type": "string",
- "enum": [
- "AFFINITY",
- "ANTI_AFFINITY"
- ]
- },
- "scope": {
- "description": "The scope of the placement constraint indicating the category of the \"place\" where the constraint applies. Permitted values: * NFVI_POP * ZONE * ZONE_GROUP * NFVI_NODE\n",
- "type": "string",
- "enum": [
- "NFVI_POP",
- "ZONE",
- "ZONE_GROUP",
- "NFVI_NODE"
- ]
- },
- "resource": {
- "description": "References to resources in the constraint rule.\n",
- "type": "array",
- "items": {
- "description": "This type references a resource either by its VIM-level identifier for existing resources, or by the identifier of a \"ResourceDefinition\" structure in the \"GrantRequest\" structure for new resources.\n",
- "type": "object",
- "required": [
- "idType",
- "resourceId"
- ],
- "properties": {
- "idType": {
- "description": "The type of the identifier. Permitted values: * RES_MGMT: Resource-management-level identifier; this identifier is managed by the VIM in the direct mode of VNF-related resource\n management, and is managed by the NFVO in the indirect mode)\n* GRANT: Reference to the identifier of a \"ResourceDefinition\" structure in the \"GrantRequest\" structure.\n",
- "type": "string",
- "enum": [
- "RES_MGMT",
- "GRANT"
- ]
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "vimConstraints": {
- "description": "Used by the VNFM to require that multiple resources are managed through the same VIM connection. If sent, the NFVO shall take the constraints into consideration when making VIM selection decisions, and shall reject the grant if they cannot be honoured. This attribute shall be supported if VNF-related Resource Management in direct mode is applicable. The applicability and further details of this attribute for indirect mode are left for future specification.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a VIM selection constraint. A set of such constraints may be sent by the VNFM to the NFVO to influence the VIM selection decisions made by the NFVO as part of the granting process.\n",
- "type": "object",
- "required": [
- "resource"
- ],
- "properties": {
- "sameResourceGroup": {
- "description": "If present and set to true, this signals that the constraint applies not only to the same VIM connection, but also to the same infrastructure resource group.\n",
- "type": "boolean"
- },
- "resource": {
- "description": "References to resources in the constraint rule. The NFVO shall ensure that all resources in this list are managed through the same VIM connection. If \"sameResourceGroup\" is set to true, the NFVO shall further ensure that all resources in this list are part of the same infrastructure resource group in that VIM connection.\n",
- "type": "array",
- "items": {
- "description": "This type references a resource either by its VIM-level identifier for existing resources, or by the identifier of a \"ResourceDefinition\" structure in the \"GrantRequest\" structure for new resources.\n",
- "type": "object",
- "required": [
- "idType",
- "resourceId"
- ],
- "properties": {
- "idType": {
- "description": "The type of the identifier. Permitted values: * RES_MGMT: Resource-management-level identifier; this identifier is managed by the VIM in the direct mode of VNF-related resource\n management, and is managed by the NFVO in the indirect mode)\n* GRANT: Reference to the identifier of a \"ResourceDefinition\" structure in the \"GrantRequest\" structure.\n",
- "type": "string",
- "enum": [
- "RES_MGMT",
- "GRANT"
- ]
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "additionalParams": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this request.\n",
- "type": "object",
- "required": [
- "vnfLcmOpOcc",
- "vnfInstance"
- ],
- "properties": {
- "vnfLcmOpOcc": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfInstance": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "201": {
- "description": "Created\nThe grant was created successfully (synchronous mode). A representation of the created \"Individual grant\" resource shall be returned in the response body. The HTTP response shall include a \"Location\" HTTP header that indicates the URI of the \"Individual grant\" resource just created.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a grant.\n",
- "type": "object",
- "required": [
- "id",
- "vnfInstanceId",
- "vnfLcmOpOccId",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLcmOpOccId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnections": {
- "description": "Provides information regarding VIM connections that are approved to be used by the VNFM to allocate resources, and provides parameters of these VIM connections. The VNFM shall update the \" vimConnectionInfo\" attribute of the \"VnfInstance\" structure by adding unknown entries received in this attribute. This attribute is not intended for the modification of VimConnection entries passed earlier; for that, the VnfInfoModificationRequest structure shall be used. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable. In direct mode, this parameter shall be absent if the VIM information was configured to the VNFM in another way, present otherwise. This interface allows to signal the use of multiple VIMs per VNF. However, due to the partial support of this feature in the present release, it is recommended in the present document that the number of entries in the \"vims\" attribute in the Grant is not greater than 1.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": [
- "id",
- "vimType"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "zones": {
- "description": "Identifies resource zones where the resources are approved to be allocated by the VNFM.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a resource zone.\n",
- "type": "object",
- "required": [
- "id",
- "zoneId"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "zoneGroups": {
- "description": "Information about groups of resource zones that are related and that the NFVO has chosen to fulfil a zoneGroup constraint in the GrantVnfLifecycleOperation request. This information confirms that the NFVO has honoured the zoneGroup constraints that were passed as part of \"placementConstraints\" in the GrantRequest.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a resource zone group. A resource zone group is a group of one or more related resource zones which can be used in resource placement constraints. To fulfil such constraint, the NFVO may decide to place a resource into any zone that belongs to a particular group. NOTE: A resource zone group can be used to support overflow from one resource zone into another, in case a particular deployment supports only non-elastic resource zones.\n",
- "type": "object",
- "required": [
- "zoneId"
- ],
- "properties": {
- "zoneId": {
- "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- }
- }
- }
- }
- },
- "computeReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "networkReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "storageReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "addResources": {
- "description": "List of resources that are approved to be added, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "tempResources": {
- "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "removeResources": {
- "description": "List of resources that are approved to be removed, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "updateResources": {
- "description": "List of resources that are approved to be modified, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "vimAssets": {
- "description": "Information about assets for the VNF that are managed by the NFVO in the VIM, such as software images and virtualised compute resource flavours. This attribute is not intended for the modification of vimAssets entries passed earlier. Modification of VIM assets during the lifetime of a VNF instance is not necessary, since it is expected that all applicable assets have been on boarded into the VIM before the VNF is instantiated.\n",
- "type": "object",
- "properties": {
- "computeResourceFlavours": {
- "description": "Mappings between virtual compute descriptors defined in the VNFD and compute resource flavours managed in the VIM.\n",
- "type": "array",
- "items": {
- "description": "If the VIM requires the use of virtual compute resource flavours during compute resource instantiation, it is assumed that such flavours are selected or created by the NFVO based on the information in the virtual compute descriptor defined in the VNFD. This type defines the mapping between a virtual compute descriptor in the VNFD and the corresponding compute resource flavour managed by the NFVO in the VIM.\n",
- "type": "object",
- "required": [
- "vnfdVirtualComputeDescId",
- "vimFlavourId"
- ],
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdVirtualComputeDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimFlavourId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "softwareImages": {
- "description": "Mappings between software images defined in the VNFD and software images managed in the VIM.\n",
- "type": "array",
- "items": {
- "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM which is needed during compute resource instantiation.\n",
- "type": "object",
- "required": [
- "vnfdSoftwareImageId",
- "vimSoftwareImageId"
- ],
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdSoftwareImageId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimSoftwareImageId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "extVirtualLinks": {
- "description": "Information about external VLs to connect the VNF to. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n",
- "type": "array",
- "items": {
- "description": "This type represents an external VL.\n",
- "type": "object",
- "required": [
- "id",
- "resourceId",
- "extCps"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "extCps": {
- "description": "External CPs of the VNF to be connected to this external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents configuration information for external CPs created from a CPD.\n",
- "type": "object",
- "required": [
- "cpdId"
- ],
- "properties": {
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpConfig": {
- "description": "List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type": "object",
- "properties": {
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "linkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "cpProtocolData": {
- "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId. \n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type": "array",
- "items": {
- "description": "This type represents network protocol data.\n",
- "type": "object",
- "required": [
- "layerProtocol"
- ],
- "properties": {
- "layerProtocol": {
- "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": [
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet": {
- "description": "This type represents network address data for IP over Ethernet.\n",
- "type": "object",
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": [
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses": {
- "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "numDynamicAddresses": {
- "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "integer"
- },
- "addressRange": {
- "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type": "object",
- "required": [
- "minAddress",
- "maxAddress"
- ],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts": {
- "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type": "object",
- "required": [
- "id",
- "resourceHandle"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinks": {
- "description": "Information about internal VLs that are managed by other entities than the VNFM. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "id",
- "virtualLinkDescId",
- "resourceId"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "virtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "additionalParams": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self",
- "vnfLcmOpOcc",
- "vnfInstance"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfLcmOpOcc": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfInstance": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "202": {
- "description": "Accepted\nThe request was accepted for processing, but the processing has not been completed. It is expected to take some time to create the grant (asynchronous mode). The response body shall be empty. The HTTP response shall include a \"Location\" HTTP header that indicates the URI of the \"Individual grant\" resource that will be created once the granting decision has been made.\n",
- "headers": {
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nThe grant was rejected. A ProblemDetails structure shall be included in the response to provide more details about the rejection in the \"details\" attribute.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Method Not Allowed\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThis code is returned if the requested byte range in the Range HTTP header is not present in the requested resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "422": {
- "description": "Unprocessable Entity\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem. NOTE 2: This error response code is only applicable for methods that have a request body.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/grants/{grantId}": {
- "parameters": [
- {
- "name": "grantId",
- "description": "Identifier of the grant. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request granting a new VNF lifecycle operation. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Grant Lifecycle Operation\n\nThe GET method retrieves information about a specific grant by reading an individual grant resource.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK\nThe grant was read successfully. A representation of the \"individual grant\" resource shall be returned in the response body.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a grant.\n",
- "type": "object",
- "required": [
- "id",
- "vnfInstanceId",
- "vnfLcmOpOccId",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLcmOpOccId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnections": {
- "description": "Provides information regarding VIM connections that are approved to be used by the VNFM to allocate resources, and provides parameters of these VIM connections. The VNFM shall update the \" vimConnectionInfo\" attribute of the \"VnfInstance\" structure by adding unknown entries received in this attribute. This attribute is not intended for the modification of VimConnection entries passed earlier; for that, the VnfInfoModificationRequest structure shall be used. This attribute shall only be supported when VNF-related Resource Management in direct mode is applicable. In direct mode, this parameter shall be absent if the VIM information was configured to the VNFM in another way, present otherwise. This interface allows to signal the use of multiple VIMs per VNF. However, due to the partial support of this feature in the present release, it is recommended in the present document that the number of entries in the \"vims\" attribute in the Grant is not greater than 1.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": [
- "id",
- "vimType"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "zones": {
- "description": "Identifies resource zones where the resources are approved to be allocated by the VNFM.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a resource zone.\n",
- "type": "object",
- "required": [
- "id",
- "zoneId"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "zoneGroups": {
- "description": "Information about groups of resource zones that are related and that the NFVO has chosen to fulfil a zoneGroup constraint in the GrantVnfLifecycleOperation request. This information confirms that the NFVO has honoured the zoneGroup constraints that were passed as part of \"placementConstraints\" in the GrantRequest.\n",
- "type": "array",
- "items": {
- "description": "This type provides information regarding a resource zone group. A resource zone group is a group of one or more related resource zones which can be used in resource placement constraints. To fulfil such constraint, the NFVO may decide to place a resource into any zone that belongs to a particular group. NOTE: A resource zone group can be used to support overflow from one resource zone into another, in case a particular deployment supports only non-elastic resource zones.\n",
- "type": "object",
- "required": [
- "zoneId"
- ],
- "properties": {
- "zoneId": {
- "description": "References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- }
- }
- }
- }
- },
- "computeReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "networkReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "storageReservationId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "addResources": {
- "description": "List of resources that are approved to be added, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "tempResources": {
- "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "removeResources": {
- "description": "List of resources that are approved to be removed, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "updateResources": {
- "description": "List of resources that are approved to be modified, with one entry per resource.\n",
- "type": "array",
- "items": {
- "description": "This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted.\n",
- "type": "object",
- "required": [
- "resourceDefinitionId"
- ],
- "properties": {
- "resourceDefinitionId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "zoneId": {
- "description": "An identifier that is unique within a limited local scope other than above listed identifiers, such as within a complex data structure or within a request-response pair. Representation: string of variable length.\n",
- "type": "string"
- },
- "resourceGroupId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "vimAssets": {
- "description": "Information about assets for the VNF that are managed by the NFVO in the VIM, such as software images and virtualised compute resource flavours. This attribute is not intended for the modification of vimAssets entries passed earlier. Modification of VIM assets during the lifetime of a VNF instance is not necessary, since it is expected that all applicable assets have been on boarded into the VIM before the VNF is instantiated.\n",
- "type": "object",
- "properties": {
- "computeResourceFlavours": {
- "description": "Mappings between virtual compute descriptors defined in the VNFD and compute resource flavours managed in the VIM.\n",
- "type": "array",
- "items": {
- "description": "If the VIM requires the use of virtual compute resource flavours during compute resource instantiation, it is assumed that such flavours are selected or created by the NFVO based on the information in the virtual compute descriptor defined in the VNFD. This type defines the mapping between a virtual compute descriptor in the VNFD and the corresponding compute resource flavour managed by the NFVO in the VIM.\n",
- "type": "object",
- "required": [
- "vnfdVirtualComputeDescId",
- "vimFlavourId"
- ],
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdVirtualComputeDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimFlavourId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "softwareImages": {
- "description": "Mappings between software images defined in the VNFD and software images managed in the VIM.\n",
- "type": "array",
- "items": {
- "description": "This type contains a mapping between a software image definition the VNFD and the corresponding software image managed by the NFVO in the VIM which is needed during compute resource instantiation.\n",
- "type": "object",
- "required": [
- "vnfdSoftwareImageId",
- "vimSoftwareImageId"
- ],
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdSoftwareImageId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimSoftwareImageId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- }
- }
- },
- "extVirtualLinks": {
- "description": "Information about external VLs to connect the VNF to. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n",
- "type": "array",
- "items": {
- "description": "This type represents an external VL.\n",
- "type": "object",
- "required": [
- "id",
- "resourceId",
- "extCps"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "extCps": {
- "description": "External CPs of the VNF to be connected to this external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents configuration information for external CPs created from a CPD.\n",
- "type": "object",
- "required": [
- "cpdId"
- ],
- "properties": {
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpConfig": {
- "description": "List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type": "object",
- "properties": {
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "linkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "cpProtocolData": {
- "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId. \n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type": "array",
- "items": {
- "description": "This type represents network protocol data.\n",
- "type": "object",
- "required": [
- "layerProtocol"
- ],
- "properties": {
- "layerProtocol": {
- "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": [
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet": {
- "description": "This type represents network address data for IP over Ethernet.\n",
- "type": "object",
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": [
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses": {
- "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "numDynamicAddresses": {
- "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "integer"
- },
- "addressRange": {
- "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type": "object",
- "required": [
- "minAddress",
- "maxAddress"
- ],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts": {
- "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type": "object",
- "required": [
- "id",
- "resourceHandle"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": [
- "vimConnectionId",
- "resourceId"
- ],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinks": {
- "description": "Information about internal VLs that are managed by other entities than the VNFM. The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use with certain VNFs, for instance to ensure that these networks have certain properties such as security or acceleration features, or to address particular network topologies. The present document assumes that externally-managed internal VLs are managed by the NFVO and created towards the VIM. External and/or externally-managed internal VLs can be passed in VNF lifecycle management operation requests such as InstantiateVnf or ChangeVnfFlavor, and/or in the grant response. The NFVO may choose to override in the grant response external and/or externally-managed VL instances that have been passed previously in the associated VNF lifecycle management request, if the lifecycle management request has originated from the NFVO itself.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "id",
- "virtualLinkDescId",
- "resourceId"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "virtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- },
- "additionalParams": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self",
- "vnfLcmOpOcc",
- "vnfInstance"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfLcmOpOcc": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfInstance": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "202": {
- "description": "Accepted\nThe process of creating the grant is ongoing, no grant is available yet. The response body shall be empty.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nThe grant was rejected. A ProblemDetails structure shall be included in the response to provide more details about the rejection in the \"details\" attribute.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Method Not Allowed\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThis code is returned if the requested byte range in the Range HTTP header is not present in the requested resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "422": {
- "description": "Unprocessable Entity\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem. NOTE 2: This error response code is only applicable for methods that have a request body.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/etsisol003adapter.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/etsisol003adapter.yaml
deleted file mode 100644
index 578708ded8..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-api/src/main/resources/etsisol003adapter.yaml
+++ /dev/null
@@ -1,525 +0,0 @@
-swagger: '2.0'
-info:
- version: 1.0.0
- title: ONAP SO VNFM Adapter API
- description: >-
- Describes the API between SO (Service Orchestrator) and the adapter for VNFM
- (Virtual Network Function Manager)
-basePath: /so/vnfm-adapter/v1
-schemes:
- - http
- - https
-consumes:
- - application/json
-produces:
- - application/json
-paths:
- '/vnfs/{vnfId}':
- post:
- tags:
- - SO VNFM Adapter
- summary: VNF create
- description: Create a VNF instance using a VNFM.
- operationId: vnf_create
- consumes:
- - application/json
- parameters:
- - required: true
- type: string
- description: >-
- The identifier of the VNF. This must be the vnf-id of an existing
- generic-vnf in AAI.
- name: vnfId
- in: path
- - in: body
- name: body
- description: VNF creation parameters
- required: true
- schema:
- $ref: '#/definitions/CreateVnfRequest'
- - name: X-ONAP-RequestID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single top level invocation of ONAP
- in: header
- required: true
- type: string
- - name: X-InvocationID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single invocation of a single component
- in: header
- required: true
- type: string
- responses:
- '202':
- description: >-
- The request was accepted for processing, but the processing has not
- been completed.
- schema:
- $ref: '#/definitions/CreateVnfResponse'
- '400':
- description: >-
- An error occurred in the VNFM adapter relating to the given input,
- for example, if the definition of the given VNF in AAI does not
- included required information.
- '404':
- description: A VNF with the specified ID was not found in AAI.
- '500':
- description: >-
- An error occurred in the VNFM adapter not relating to the given
- input, or an error is received from the VNFM.
- delete:
- tags:
- - SO VNFM Adapter
- summary: VNF delete
- description: Delete an instance of a VNF using a VNFM.
- operationId: vnf_delete
- consumes:
- - application/json
- parameters:
- - required: true
- type: string
- description: >-
- The identifier of the VNF. This must be the vnf-id of an existing
- generic-vnf in AAI
- name: vnfId
- in: path
- - name: X-ONAP-RequestID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single top level invocation of ONAP
- in: header
- required: true
- type: string
- - name: X-InvocationID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single invocation of a single component
- in: header
- required: true
- type: string
- responses:
- '202':
- description: >-
- The request was accepted for processing, but the processing has not
- been completed.
- schema:
- $ref: '#/definitions/DeleteVnfResponse'
- '400':
- description: >-
- An error occurred in the VNFM adapter relating to the given input,
- for example, if the definition of the given VNF in AAI does not
- included required information.
- '404':
- description: A VNF with the specified ID was not found in AAI.
- '500':
- description: >-
- An error occurred in the VNFM adapter not relating to the given
- input, or an error is received from the VNFM.
- '/jobs/{jobId}':
- get:
- tags:
- - SO VNFM Adapter
- summary: Job query
- description: Query the status of a job.
- operationId: job_query
- consumes:
- - application/json
- produces:
- - application/json
- parameters:
- - required: true
- type: string
- description: The identifier of the Job.
- name: jobId
- in: path
- - name: X-ONAP-RequestID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single top level invocation of ONAP
- in: header
- required: true
- type: string
- - name: X-InvocationID
- description: >-
- Used to track REST requests for logging purposes. Identifies a
- single invocation of a single component
- in: header
- required: true
- type: string
- responses:
- '200':
- description: ''
- schema:
- $ref: '#/definitions/QueryJobResponse'
- '404':
- description: A job with the specified ID was not found.
- '500':
- description: >-
- An error occurred in the VNFM adapter not relating to the given
- input, or an error is received from the VNFM.
-definitions:
- CreateVnfRequest:
- type: object
- properties:
- name:
- type: string
- description: The name to be applied to the VNF.
- tenant:
- $ref: '#/definitions/Tenant'
- pkgId:
- type: string
- description: An identifier for the vnf package.
- additionalParams:
- type: object
- description: >-
- Additional input parameters for the instantiation process, specific to
- the VNF being instantiated, as declared in the VNFD as part of
- "InstantiateVnfOpConfig".
- additionalProperties:
- type: string
- externalVirtualLinks:
- type: array
- description: Information about external VLs to connect the VNF to.
- items:
- $ref: '#/definitions/ExternalVirtualLink'
- required:
- - name
- - tenant
- Tenant:
- type: object
- description: Details of the tenant that VNFs can be deployed into
- properties:
- cloudOwner:
- type: string
- description: The owner in AAI of the cloud to which the tenant belongs.
- regionName:
- type: string
- description: The regionName in AAI of the cloud to which the tenant belongs.
- tenantId:
- type: string
- description: The identifier of the tenant in the VIM.
- required:
- - cloudOwner
- - regionName
- - tenantId
- CreateVnfResponse:
- type: object
- properties:
- jobId:
- description: The ID of the job which can be used to query the status of the job
- type: string
- required:
- - jobId
- DeleteVnfResponse:
- type: object
- properties:
- jobId:
- description: >-
- The ID of the job which can be used to query the status of the delete
- job
- type: string
- required:
- - jobId
- QueryJobResponse:
- type: object
- properties:
- operationStatusRetrievalStatus:
- $ref: '#/definitions/OperationStatusRetrievalStatusEnum'
- id:
- type: string
- operation:
- $ref: '#/definitions/OperationEnum'
- operationState:
- $ref: '#/definitions/OperationStateEnum'
- startTime:
- type: string
- format: date-time
- stateEnteredTime:
- type: string
- format: date-time
- vnfInstanceId:
- type: string
- required:
- - operationStatusRetrievalStatus
- OperationStatusRetrievalStatusEnum:
- description: The status of the attempt to retrieve the operation from the VNFM
- type: string
- enum:
- - STATUS_FOUND
- - WAITING_FOR_STATUS
- - OPERATION_NOT_FOUND
- - CANNOT_RETRIEVE_STATUS
- OperationEnum:
- description: The operation
- type: string
- enum:
- - INSTANTIATE
- - SCALE
- - SCALE_TO_LEVEL
- - CHANGE_FLAVOUR
- - TERMINATE
- - HEAL
- - OPERATE
- - CHANGE_EXT_CONN
- - MODIFY_INFO
- OperationStateEnum:
- description: The status of the operation
- type: string
- enum:
- - STARTING
- - PROCESSING
- - COMPLETED
- - FAILED_TEMP
- - FAILED
- - ROLLING_BACK
- - ROLLED_BACK
- ExternalVirtualLink:
- description: |
- This type represents an external VL.
- type: object
- required:
- - id
- - resourceId
- - extCps
- properties:
- id:
- description: |
- An identifier with the intention of being globally unique.
- type: string
- tenant:
- $ref: '#/definitions/Tenant'
- resourceId:
- description: |
- An identifier maintained by the VIM.
- type: string
- extCps:
- description: |
- External CPs of the VNF to be connected to this external VL.
- type: array
- items:
- description: >
- This type represents configuration information for external CPs
- created from a CPD.
- type: object
- required:
- - cpdId
- properties:
- cpdId:
- description: |
- An identifier that is unique within a VNF descriptor.
- type: string
- cpConfig:
- description: >
- List of instance data that need to be configured on the CP
- instances created from the respective CPD.
- type: array
- items:
- description: >
- This type represents an externally provided link port or
- network address information per instance of an external
- connection point. In case a link port is provided, the VNFM
- shall use that link port when connecting the external CP to
- the external VL. In a link port is not provided, the VNFM
- shall create a link port on the external VL, and use that link
- port to connect the external CP to the external VL.
- type: object
- properties:
- cpInstanceId:
- description: >
- An identifier that is unique for the respective type
- within a VNF instance, but may not be globally unique.
- type: string
- linkPortId:
- description: |
- An identifier with the intention of being globally unique.
- type: string
- cpProtocolData:
- description: >
- Parameters for configuring the network protocols on the
- link port that connects the CP to a VL. The following
- conditions apply to the attributes "linkPortId" and
- "cpProtocolData": * The "linkPortId" and "cpProtocolData"
- attributes shall both be absent for the deletion of an
- existing external CP instance
- addressed by cpInstanceId.
- * At least one of these attributes shall be present for a
- to-be-created external CP instance or an existing external
- CP instance.
- * If the "linkPortId" attribute is absent, the VNFM shall
- create a link port.
-
- * If the "cpProtocolData" attribute is absent, the
- "linkPortId" attribute shall be provided referencing a
- pre-created link port,
- and the VNFM can use means outside the scope of the present
- document to obtain the pre-configured address information for the
- connection point from the resource representing the link port.
- * If both "cpProtocolData" and "linkportId" are provided,
- the API consumer shall ensure that the cpProtocolData can
- be used with the
- pre-created link port referenced by "linkPortId".
- type: array
- items:
- description: |
- This type represents network protocol data.
- type: object
- required:
- - layerProtocol
- properties:
- layerProtocol:
- description: >
- Identifier of layer(s) and protocol(s). This
- attribute allows to signal the addition of further
- types of layer and protocol in future versions of
- the present document in a backwards-compatible way.
- In the current version of the present document, only
- IP over Ethernet is supported.
- type: string
- enum:
- - IP_OVER_ETHERNET
- ipOverEthernet:
- description: >
- This type represents network address data for IP
- over Ethernet.
- type: object
- properties:
- macAddress:
- description: >
- A MAC address. Representation: string that
- consists of groups of two hexadecimal digits,
- separated by hyphens or colons.
- type: string
- format: MAC
- ipAddresses:
- description: >
- List of IP addresses to assign to the CP
- instance. Each entry represents IP address data
- for fixed or dynamic IP address assignment per
- subnet. If this attribute is not present, no IP
- address shall be assigned.
- type: array
- items:
- type: object
- required:
- - type
- properties:
- type:
- description: >
- The type of the IP addresses. Permitted
- values: IPV4, IPV6.
- type: string
- enum:
- - IPV4
- - IPV6
- fixedAddresses:
- description: >
- Fixed addresses to assign (from the subnet
- defined by "subnetId" if provided).
- Exactly one of "fixedAddresses",
- "numDynamicAddresses" or "ipAddressRange"
- shall be present.
- type: array
- items:
- description: >
- An IPV4 or IPV6 address. Representation:
- In case of an IPV4 address, string that
- consists of four decimal integers
- separated by dots, each integer ranging
- from 0 to 255. In case of an IPV6
- address, string that consists of groups
- of zero to four hexadecimal digits,
- separated by colons.
- type: string
- format: IP
- numDynamicAddresses:
- description: >
- Number of dynamic addresses to assign
- (from the subnet defined by "subnetId" if
- provided). Exactly one of
- "fixedAddresses", "numDynamicAddresses" or
- "ipAddressRange" shall be present.
- type: integer
- addressRange:
- description: >
- An IP address range to be used, e.g. in
- case of egress connections. In case this
- attribute is present, IP addresses from
- the range will be used.
- type: object
- required:
- - minAddress
- - maxAddress
- properties:
- minAddress:
- description: >
- An IPV4 or IPV6 address. Representation:
- In case of an IPV4 address, string that
- consists of four decimal integers
- separated by dots, each integer ranging
- from 0 to 255. In case of an IPV6
- address, string that consists of groups
- of zero to four hexadecimal digits,
- separated by colons.
- type: string
- format: IP
- maxAddress:
- description: >
- An IPV4 or IPV6 address. Representation:
- In case of an IPV4 address, string that
- consists of four decimal integers
- separated by dots, each integer ranging
- from 0 to 255. In case of an IPV6
- address, string that consists of groups
- of zero to four hexadecimal digits,
- separated by colons.
- type: string
- format: IP
- subnetId:
- description: >
- An identifier maintained by the VIM or
- other resource provider. It is expected to
- be unique within the VIM instance.
- type: string
- extLinkPorts:
- description: >
- Externally provided link ports to be used to connect external
- connection points to this external VL. If this attribute is not
- present, the VNFM shall create the link ports on the external VL.
- type: array
- items:
- description: >
- This type represents an externally provided link port to be used to
- connect an external connection point to an external VL.
- type: object
- required:
- - id
- - resourceHandle
- properties:
- id:
- description: |
- An identifier with the intention of being globally unique.
- type: string
- resourceHandle:
- required:
- - tenant
- - resourceId
- type: object
- description: >
- This type represents the information that allows addressing a
- virtualised resource that is used by a VNF instance.
- properties:
- tenant:
- $ref: '#/definitions/Tenant'
- resourceId:
- description: >
- An identifier maintained by the VIM or other resource
- provider. It is expected to be unique within the VIM
- instance.
- type: string
- vimLevelResourceType:
- description: >
- Type of the resource in the scope of the VIM or the resource
- provider.
- type: string
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/pom.xml
deleted file mode 100644
index 14e8a600b5..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/pom.xml
+++ /dev/null
@@ -1,173 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-lcm-ext-clients</artifactId>
- <name>ETSI SOL003 Life Cycle Management Adapter Ext Clients</name>
- <build>
- <plugins>
- <plugin>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <version>${version-swagger-codegen}</version>
- <executions>
- <execution>
- <id>sol003-vnf-lcm-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL003-VNFLifecycleManagement-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/sol003-vnf-lcm</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <jackson>true</jackson>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${project.basedir}/target/generated-sources/sol003-vnf-lcm/src/gen/java/main</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <goals>
- <goal>generate</goal>
- </goals>
- <versionRange>[2.2.0,)</versionRange>
- </pluginExecutionFilter>
- <action>
- <execute>
- <runOnIncremental>false</runOnIncremental>
- </execute>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <dependencies>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-gson</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>retrofit</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-scalars</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.oltu.oauth2</groupId>
- <artifactId>org.apache.oltu.oauth2.client</artifactId>
- <version>${oltu-version}</version>
- </dependency>
- <dependency>
- <groupId>io.gsonfire</groupId>
- <artifactId>gson-fire</artifactId>
- <version>${gson-fire-version}</version>
- </dependency>
- <dependency>
- <groupId>org.threeten</groupId>
- <artifactId>threetenbp</artifactId>
- <version>${threetenbp-version}</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava2</groupId>
- <artifactId>rxjava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>adapter-rxjava2</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>${okio-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/src/main/resources/SOL003-VNFLifecycleManagement-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/src/main/resources/SOL003-VNFLifecycleManagement-API.json
deleted file mode 100644
index 2bc25a2d5b..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/etsi-sol003-lcm-ext-clients/src/main/resources/SOL003-VNFLifecycleManagement-API.json
+++ /dev/null
@@ -1,8143 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "version": "1.1.1",
- "title": "SOL003 - VNF Lifecycle Management interface",
- "description": "SOL003 - VNF Lifecycle Management interface definition\n\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\n\nIn clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based filtering mechanism is defined. This mechanism is currently not included in the corresponding OpenAPI design for this GS version. Changes to the attribute-based filtering mechanism are being considered in v2.5.1 of this GS for inclusion in the corresponding future ETSI NFV OpenAPI design.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n",
- "license": {
- "name": "ETSI Forge copyright notice",
- "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- }
- },
- "externalDocs": {
- "description": "ETSI GS NFV-SOL 003 V2.4.1",
- "url": "http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.04.01_60/gs_NFV-SOL003v020401p.pdf"
- },
- "basePath": "/vnflcm/v1",
- "schemes": ["https"],
- "consumes": ["application/json"],
- "produces": ["application/json"],
- "paths": {
- "/vnf_instances": {
- "post": {
- "description": "Create VNF Identifier\n\nThe POST method creates a new VNF instance resource.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "createVnfRequest",
- "description": "The VNF creation parameters",
- "in": "body",
- "required": true,
- "schema": {
- "type": "object",
- "required": ["vnfdId"],
- "properties": {
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceName": {
- "description": "Human-readable name of the VNF instance to be created.\n",
- "type": "string"
- },
- "vnfInstanceDescription": {
- "description": "Human-readable description of the VNF instance to be created.\n",
- "type": "string"
- }
- }
- }
- }, {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "201": {
- "description": "A VNF Instance identifier was created successfully",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfdId", "vnfProvider", "vnfProductName", "vnfSoftwareVersion", "vnfdVersion", "vnfPkgId", "instantiationState"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceName": {
- "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfInstanceDescription": {
- "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfConfigurableProperties": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "vimConnectionInfo": {
- "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": ["id", "vimType"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "instantiationState": {
- "description": "The instantiation state of the VNF.\n",
- "type": "string",
- "enum": ["NOT_INSTANTIATED", "INSTANTIATED"]
- },
- "instantiatedVnfInfo": {
- "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type": "object",
- "required": ["flavourId", "vnfState"],
- "properties": {
- "flavourId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfState": {
- "type": "string",
- "enum": ["STARTED", "STOPPED"]
- },
- "scaleStatus": {
- "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type": "array",
- "items": {
- "required": ["aspectId", "scaleLevel"],
- "type": "object",
- "properties": {
- "aspectId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "scaleLevel": {
- "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type": "integer"
- }
- }
- }
- },
- "extCpInfo": {
- "description": "Information about the external CPs exposed by the VNF instance.\n",
- "type": "array",
- "minItems": 1,
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "extVirtualLinkInfo": {
- "description": "Information about the external VLs the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "extLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo": {
- "description": "External virtual links the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "vnfLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters": {
- "description": "Active monitoring parameters.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "value", "timeStamp"],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "name": {
- "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type": "string"
- },
- "value": {
- "description": "Value of the monitoring parameter known to the VNFM (e.g. obtained for autoscaling purposes). The type of the \"value\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification.\n",
- "type": "object"
- },
- "timeStamp": {
- "description": "Represents the point in time when the measurement has been performed, as known to the VNFM. Should be formatted according to ETF RFC 3339.\n",
- "type": "string"
- }
- }
- }
- },
- "localizationLanguage": {
- "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type": "string"
- },
- "vnfcResourceInfo": {
- "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vduId", "computeResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "computeResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "storageResourceIds": {
- "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfcCpInfo": {
- "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfExtCpId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualLinkResourceInfo": {
- "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId", "networkResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLinkPorts": {
- "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualStorageResourceInfo": {
- "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type": "object",
- "required": ["id", "virtualStorageDescId", "storageResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "virtualStorageDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "storageResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extensions": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "indicators": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "instantiate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "terminate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scale": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scaleToLevel": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeFlavour": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "heal": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "operate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeExtConn": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nAnother request is in progress that prohibits the fulfilment of the current request, or the current resource state is inconsistent with the request.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThis code is returned if the requested byte range in the Range HTTP header is not present in the requested resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "422": {
- "description": "Unprocessable Entity\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem. NOTE 2: This error response code is only applicable for methods that have a request body.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_instances/{vnfInstanceId}": {
- "parameters": [{
- "name": "vnfInstanceId",
- "description": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new VNF instance resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Query VNF\n\nThe GET method retrieves information about a VNF instance by reading an individual VNF instance resource.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK\nInformation about zero or more VNF instances was queried successfully. The response body shall contain representations of zero or more VNF instances.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfdId", "vnfProvider", "vnfProductName", "vnfSoftwareVersion", "vnfdVersion", "vnfPkgId", "instantiationState"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceName": {
- "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfInstanceDescription": {
- "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfConfigurableProperties": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "vimConnectionInfo": {
- "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": ["id", "vimType"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "instantiationState": {
- "description": "The instantiation state of the VNF.\n",
- "type": "string",
- "enum": ["NOT_INSTANTIATED", "INSTANTIATED"]
- },
- "instantiatedVnfInfo": {
- "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type": "object",
- "required": ["flavourId", "vnfState"],
- "properties": {
- "flavourId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfState": {
- "type": "string",
- "enum": ["STARTED", "STOPPED"]
- },
- "scaleStatus": {
- "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type": "array",
- "items": {
- "required": ["aspectId", "scaleLevel"],
- "type": "object",
- "properties": {
- "aspectId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "scaleLevel": {
- "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type": "integer"
- }
- }
- }
- },
- "extCpInfo": {
- "description": "Information about the external CPs exposed by the VNF instance.\n",
- "type": "array",
- "minItems": 1,
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "extVirtualLinkInfo": {
- "description": "Information about the external VLs the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "extLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo": {
- "description": "External virtual links the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "vnfLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters": {
- "description": "Active monitoring parameters.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "value", "timeStamp"],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "name": {
- "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type": "string"
- },
- "value": {
- "description": "Value of the monitoring parameter known to the VNFM (e.g. obtained for autoscaling purposes). The type of the \"value\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification.\n",
- "type": "object"
- },
- "timeStamp": {
- "description": "Represents the point in time when the measurement has been performed, as known to the VNFM. Should be formatted according to ETF RFC 3339.\n",
- "type": "string"
- }
- }
- }
- },
- "localizationLanguage": {
- "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type": "string"
- },
- "vnfcResourceInfo": {
- "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vduId", "computeResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "computeResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "storageResourceIds": {
- "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfcCpInfo": {
- "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfExtCpId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualLinkResourceInfo": {
- "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId", "networkResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLinkPorts": {
- "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualStorageResourceInfo": {
- "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type": "object",
- "required": ["id", "virtualStorageDescId", "storageResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "virtualStorageDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "storageResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extensions": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "indicators": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "instantiate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "terminate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scale": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scaleToLevel": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeFlavour": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "heal": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "operate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeExtConn": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nAnother request is in progress that prohibits the fulfilment of the current request, or the current resource state is inconsistent with the request.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThis code is returned if the requested byte range in the Range HTTP header is not present in the requested resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "delete": {
- "description": "Delete VNF Identifier\n\nThis method deletes an individual VNF instance resource.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "204": {
- "description": "No Content\nThe VNF instance resource and the associated VNF identifier were deleted successfully. The response body shall be empty.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIt fhe request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem. If the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided. If there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nThe operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. Typically, this is due to the fact that the VNF instance resource is in INSTANTIATED state. The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "412": {
- "description": "Precondition Failed\nA precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. The response body should contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_instances/{vnfInstanceId}/instantiate": {
- "parameters": [{
- "name": "vnfInstanceId",
- "description": "Identifier of the VNF instance. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new VNF instance resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "post": {
- "description": "Instantiate VNF\n\nThe POST method instantiates a VNF instance.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "InstantiateVnfRequest",
- "description": "Parameters for the VNF instantiation.",
- "in": "body",
- "required": true,
- "schema": {
- "type": "object",
- "required": ["flavourId"],
- "properties": {
- "flavourId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "extVirtualLinks": {
- "description": "Information about external VLs to connect the VNF to.\n",
- "type": "array",
- "items": {
- "description": "This type represents an external VL.\n",
- "type": "object",
- "required": ["id", "resourceId", "extCps"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "extCps": {
- "description": "External CPs of the VNF to be connected to this external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents configuration information for external CPs created from a CPD.\n",
- "type": "object",
- "required": ["cpdId"],
- "properties": {
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpConfig": {
- "description": "List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type": "object",
- "properties": {
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "linkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "cpProtocolData": {
- "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId. \n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type": "array",
- "items": {
- "description": "This type represents network protocol data.\n",
- "type": "object",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "Identifier of layer(s) and protocol(s). This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents network address data for IP over Ethernet.\n",
- "type": "object",
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "fixedAddresses": {
- "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "numDynamicAddresses": {
- "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type": "integer"
- },
- "addressRange": {
- "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts": {
- "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the VNFM shall create the link ports on the external VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vimConnectionInfo": {
- "description": "Information about VIM connections to be used for managing the resources for the VNF instance, or refer to external / externally-managed virtual links. This attribute shall only be supported and may be present if VNF-related resource management in direct mode is applicable.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": ["id", "vimType"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "additionalParams": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- }, {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "202": {
- "description": "Accepted\nThe request was accepted for processing, but the processing has not been completed. The response body shall be empty. The HTTP response shall include a \"Location\" HTTP header that contains the URI of the newly-created \"VNF LCM operation occurrence\" resource corresponding to the operation.\n",
- "headers": {
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nThe operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. Typically, this is due to the fact that the VNF instance resource is in INSTANTIATED state. The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThis code is returned if the requested byte range in the Range HTTP header is not present in the requested resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_instances/{vnfInstanceId}/terminate": {
- "parameters": [{
- "name": "vnfInstanceId",
- "description": "The identifier of the VNF instance to be terminated. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new VNF instance resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "post": {
- "description": "Terminate VNF\n\nThe POST method terminates a VNF instance.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "TerminateVnfRequest",
- "description": "Parameters for the VNF termination.",
- "in": "body",
- "required": true,
- "schema": {
- "type": "object",
- "required": ["terminationType"],
- "properties": {
- "terminationType": {
- "description": "Indicates whether forceful or graceful termination is requested. VNFM Adapter will only support FORCEFUL in Dublin.\n",
- "type": "string",
- "enum": ["FORCEFUL", "GRACEFUL"]
- }
- }
- }
- }, {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "202": {
- "description": "Accepted\nThe request was accepted for processing, but the processing has not been completed. On success, the HTTP response shall include a \"Location\" HTTP header that contains the URI of the newly-created \"VNF LCM operation occurrence\" resource corresponding to the operation.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfdId", "vnfProvider", "vnfProductName", "vnfSoftwareVersion", "vnfdVersion", "vnfPkgId", "instantiationState"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfInstanceName": {
- "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfInstanceDescription": {
- "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfConfigurableProperties": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "vimConnectionInfo": {
- "description": "Information about VIM connections to be used for managing the resources for the VNF instance. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. This attribute can be modified with the PATCH method.\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": ["id", "vimType"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "instantiationState": {
- "description": "The instantiation state of the VNF.\n",
- "type": "string",
- "enum": ["NOT_INSTANTIATED", "INSTANTIATED"]
- },
- "instantiatedVnfInfo": {
- "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type": "object",
- "required": ["flavourId", "vnfState"],
- "properties": {
- "flavourId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfState": {
- "type": "string",
- "enum": ["STARTED", "STOPPED"]
- },
- "scaleStatus": {
- "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type": "array",
- "items": {
- "required": ["aspectId", "scaleLevel"],
- "type": "object",
- "properties": {
- "aspectId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "scaleLevel": {
- "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type": "integer"
- }
- }
- }
- },
- "extCpInfo": {
- "description": "Information about the external CPs exposed by the VNF instance.\n",
- "type": "array",
- "minItems": 1,
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPortId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "extVirtualLinkInfo": {
- "description": "Information about the external VLs the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "extLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo": {
- "description": "External virtual links the VNF instance is connected to.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "vnfLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters": {
- "description": "Active monitoring parameters.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "value", "timeStamp"],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "name": {
- "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type": "string"
- },
- "value": {
- "description": "Value of the monitoring parameter known to the VNFM (e.g. obtained for autoscaling purposes). The type of the \"value\" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification.\n",
- "type": "object"
- },
- "timeStamp": {
- "description": "Represents the point in time when the measurement has been performed, as known to the VNFM. Should be formatted according to ETF RFC 3339.\n",
- "type": "string"
- }
- }
- }
- },
- "localizationLanguage": {
- "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type": "string"
- },
- "vnfcResourceInfo": {
- "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vduId", "computeResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "computeResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "storageResourceIds": {
- "description": "References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfcCpInfo": {
- "description": "CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "cpdId"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpdId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "vnfExtCpId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "cpProtocolInfo": {
- "description": "Network protocol information for this CP.\n",
- "type": "array",
- "items": {
- "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\n",
- "required": ["layerProtocol"],
- "properties": {
- "layerProtocol": {
- "description": "The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET This attribute allows to signal the addition of further types of layer and protocol in future versions of the present document in a backwards-compatible way. In the current version of the present document, only IP over Ethernet is supported.\n",
- "type": "string",
- "enum": ["IP_OVER_ETHERNET"]
- },
- "ipOverEthernet": {
- "description": "This type represents information about a network address that has been assigned.\n",
- "type": "object",
- "required": ["macAddress"],
- "properties": {
- "macAddress": {
- "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type": "string",
- "format": "MAC"
- },
- "ipAddresses": {
- "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["type"],
- "properties": {
- "type": {
- "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type": "string",
- "enum": ["IPV4", "IPV6"]
- },
- "addresses": {
- "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type": "array",
- "items": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- },
- "isDynamic": {
- "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type": "boolean"
- },
- "addressRange": {
- "description": "An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type": "object",
- "required": ["minAddress", "maxAddress"],
- "properties": {
- "minAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- },
- "maxAddress": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- },
- "subnetId": {
- "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type": "string",
- "format": "IP"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualLinkResourceInfo": {
- "description": "Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type": "object",
- "required": ["id", "vnfVirtualLinkDescId", "networkResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vnfVirtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfLinkPorts": {
- "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "virtualStorageResourceInfo": {
- "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type": "array",
- "items": {
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type": "object",
- "required": ["id", "virtualStorageDescId", "storageResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "virtualStorageDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "storageResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "reservationId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extensions": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "indicators": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "instantiate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "terminate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scale": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "scaleToLevel": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeFlavour": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "heal": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "operate": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "changeExtConn": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nThe operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. Typically, this is due to the fact that the VNF instance resource is in NOT-INSTANTIATED state, or that another lifecycle management operation is ongoing. The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_lcm_op_occs/{vnfLcmOpOccId}": {
- "parameters": [{
- "name": "vnfLcmOpOccId",
- "description": "Identifier of a VNF lifecycle management operation occurrence. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a PATCH or POST request triggering a VNF LCM operation. It can also be retrieved from the \"vnfLcmOpOccId\" attribute in the VnfLcmOperationOccurrenceNotification.\n",
- "in": "path",
- "required": true,
- "type": "string"
- }
- ],
- "get": {
- "description": "Get Operation Status\n\nThe client can use this method to retrieve status information about a VNF lifecycle management operation occurrence by reading an individual \"VNF LCM operation occurrence\" resource.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK\nInformation about an individual VNF instance was queried successfully. The response body shall contain status information about a VNF lifecycle management operation occurrence.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a VNF lifecycle management operation occurrence.\n",
- "type": "object",
- "required": ["id", "operationState", "stateEnteredTime", "startTime", "vnfInstanceId", "operation", "isAutomaticInvocation", "operationParams", "isCancelPending"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "operationState": {
- "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type": "string",
- "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"]
- },
- "stateEnteredTime": {
- "description": "Date-time when the current state was entered.\n",
- "type": "string",
- "format": "date-time"
- },
- "startTime": {
- "description": "Date-time of the start of the operation.\n",
- "type": "string",
- "format": "date-time"
- },
- "vnfInstanceId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "grantId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "operation": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": ["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"]
- },
- "isAutomaticInvocation": {
- "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n",
- "type": "boolean"
- },
- "operationParams": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "isCancelPending": {
- "description": "If the VNF LCM operation occurrence is in \"STARTING\", \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
- "type": "boolean"
- },
- "cancelMode": {
- "description": "Cancellation mode. GRACEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation and shall wait for the ongoing resource management operations in the underlying system, typically the VIM, to finish execution or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and shall wait for the granting request to finish execution or time out. After that, the VNFM shall put the operation occurrence into the ROLLED_BACK state. FORCEFUL: If the VNF LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state, the VNFM shall not start any new resource management operation, shall cancel the ongoing resource management operations in the underlying system, typically the VIM, and shall wait for the cancellation to finish or to time out. After that, the VNFM shall put the operation occurrence into the FAILED_TEMP state. If the VNF LCM operation occurrence is in \"STARTING\" state, the VNFM shall not start any resource management operation and put the operation occurrence into the ROLLED_BACK state.\n",
- "type": "string",
- "enum": ["GRACEFUL", "FORCEFUL"]
- },
- "error": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- },
- "resourceChanges": {
- "description": "This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable.\n",
- "type": "object",
- "properties": {
- "affectedVnfcs": {
- "description": "Information about VNFC instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
- "type": "array",
- "items": {
- "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n",
- "type": "object",
- "required": ["id", "vduId", "changeType", "computeResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "vduId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "changeType": {
- "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n",
- "type": "string",
- "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"]
- },
- "computeResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "affectedVnfcCpIds": {
- "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- },
- "addedStorageResourceIds": {
- "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- },
- "removedStorageResourceIds": {
- "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n",
- "type": "array",
- "items": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- },
- "affectedVirtualLinks": {
- "description": "Information about VL instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
- "type": "array",
- "items": {
- "description": "This type provides information about added, deleted, modified and temporary VLs.\n",
- "type": "object",
- "required": ["id", "virtualLinkDescId", "changeType", "networkResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "virtualLinkDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "changeType": {
- "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n",
- "type": "string",
- "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY", "LINK_PORT_ADDED", "LINK_PORT_REMOVED"]
- },
- "networkResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "affectedVirtualStorages": {
- "description": "Information about virtualised storage instances that were affected during the lifecycle operation. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
- "type": "array",
- "items": {
- "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n",
- "type": "object",
- "required": ["id", "virtualStorageDescId", "changeType", "storageResource"],
- "properties": {
- "id": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- },
- "virtualStorageDescId": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "changeType": {
- "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n",
- "type": "string",
- "enum": ["ADDED", "REMOVED", "MODIFIED", "TEMPORARY"]
- },
- "storageResource": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- }
- }
- },
- "changedInfo": {
- "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package.\n",
- "type": "object",
- "properties": {
- "vnfInstanceName": {
- "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\".\n",
- "type": "string"
- },
- "vnfInstanceDescription": {
- "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\".\n",
- "type": "string"
- },
- "vnfConfigurableProperties": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extensions": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "vimConnectionInfo": {
- "description": "If present, this attribute signals modifications of certain entries in the \"vimConnectionInfo\" attribute array in \"VnfInstance\".\n",
- "type": "array",
- "items": {
- "description": "This type represents parameters to connect to a VIM for managing the resources of a VNF instance. This structure is used to convey VIM-related parameters over the Or-Vnfm interface. Additional parameters for a VIM may be configured into the VNFM by means outside the scope of the present document, and bound to the identifier of that VIM.\n",
- "type": "object",
- "required": ["id", "vimType"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vimType": {
- "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information provides access to information about VimConnectionInfo definitions for various VIM types. The structure of the registry is defined in Annex C of SOL003.\n",
- "type": "string"
- },
- "interfaceInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "accessInfo": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "extra": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". If present, this attribute (which depends on the value of the \"vnfPkgId\" attribute) was modified implicitly following a request to modify the \"vnfPkgId\" attribute, by copying the value of this attribute from the VNFD in the VNF Package identified by the \"vnfPkgId” attribute.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- }
- }
- },
- "changedExtConnectivity": {
- "description": "Information about changed external connectivity, if applicable. This allows the NFVO to obtain the information contained in the latest \"result\" notification if it has not received it due to an error or a wrongly configured subscription filter.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "extLinkPorts": {
- "description": "Link ports of this VL.\n",
- "type": "array",
- "items": {
- "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type": "object",
- "required": ["id", "resourceHandle"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceHandle": {
- "required": ["vimConnectionId", "resourceId"],
- "type": "object",
- "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
- "properties": {
- "vimConnectionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceProviderId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "resourceId": {
- "description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
- "type": "string"
- },
- "vimLevelResourceType": {
- "description": "Type of the resource in the scope of the VIM or the resource provider.\n",
- "type": "string"
- }
- }
- },
- "cpInstanceId": {
- "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self", "vnfInstance"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "vnfInstance": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "grant": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "cancel": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "retry": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "rollback": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- },
- "fail": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nAnother request is in progress that prohibits the fulfilment of the current request, or the current resource state is inconsistent with the request.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions": {
- "post": {
- "description": "Subscribe\n\nThe POST method creates a new subscription. Creation of two subscription resources with the same callbackURI and the same filter can result in performance degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very rare use cases. Consequently, the VNFM may either allow creating a subscription resource if another subscription resource with the same filter and callbackUri already exists (in which case it shall return the “201 Created” response code), or may decide to not create a duplicate subscription resource (in which case it shall return a “303 See Other” response code referencing the existing subscription resource with the same filter and callbackUri).\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "LccnSubscriptionRequest",
- "description": "Details of the subscription to be created.\n",
- "in": "body",
- "required": true,
- "schema": {
- "description": "This type represents a subscription request related to notifications about VNF lifecycle changes.\n",
- "type": "object",
- "required": ["callbackUri"],
- "properties": {
- "filter": {
- "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "vnfInstanceSubscriptionFilter": {
- "description": "This type represents subscription filter criteria to match VNF instances.\n",
- "type": "object",
- "properties": {
- "vnfInstanceIds": {
- "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- }
- }
- },
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: * VnfLcmOperationOccurrenceNotification * VnfIdentifierCreationNotification * VnfIdentifierDeletionNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["VnfLcmOperationOccurrenceNotification", "VnfIdentifierCreationNotification", "VnfIdentifierDeletionNotification"]
- }
- },
- "operationTypes": {
- "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": ["INSTANTIATE", "TERMINATE"]
- }
- },
- "operationStates": {
- "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type": "string",
- "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"]
- }
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "authentication": {
- "type": "object",
- "required": ["authType"],
- "properties": {
- "authType": {
- "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["BASIC", "OAUTH2_CLIENT_CREDENTIALS", "TLS_CERT"]
- }
- },
- "paramsBasic": {
- "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type": "object",
- "properties": {
- "userName": {
- "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type": "string"
- },
- "password": {
- "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type": "string"
- }
- }
- },
- "paramsOauth2ClientCredentials": {
- "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type": "object",
- "properties": {
- "clientId": {
- "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type": "string"
- },
- "clientPassword": {
- "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type": "string"
- },
- "tokenEndpoint": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }, {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "201": {
- "description": "Created\nThe subscription was created successfully. The response body shall contain a representation of the created subscription resource. The HTTP response shall include a \"Location\" HTTP header that points to the created subscription resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n",
- "type": "object",
- "required": ["id", "callbackUri", "_links"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "vnfInstanceSubscriptionFilter": {
- "description": "This type represents subscription filter criteria to match VNF instances.\n",
- "type": "object",
- "properties": {
- "vnfdIds": {
- "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProvider"],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProductName"],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfSoftwareVersion"],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfInstanceIds": {
- "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfInstanceNames": {
- "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: * VnfLcmOperationOccurrenceNotification * VnfIdentifierCreationNotification * VnfIdentifierDeletionNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["VnfLcmOperationOccurrenceNotification", "VnfIdentifierCreationNotification", "VnfIdentifierDeletionNotification"]
- }
- },
- "operationTypes": {
- "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": ["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"]
- }
- },
- "operationStates": {
- "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type": "string",
- "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"]
- }
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "303": {
- "description": "See Other\nA subscription with the same callbackURI and the same filter already exists and the policy of the VNFM is to not create redundant subscriptions. The HTTP response shall include a \"Location\" HTTP header that contains the resource URI of the existing subscription resource. The response body shall be empty.\n",
- "headers": {
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "get": {
- "description": "Query Subscription Information\n\nThe GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for resynchronization after error situations.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK\nThe list of subscriptions was queried successfully. The response body shall contain the representations of all active subscriptions of the functional block that invokes the method.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n",
- "type": "object",
- "required": ["id", "callbackUri", "_links"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "vnfInstanceSubscriptionFilter": {
- "description": "This type represents subscription filter criteria to match VNF instances.\n",
- "type": "object",
- "properties": {
- "vnfdIds": {
- "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProvider"],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProductName"],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfSoftwareVersion"],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfInstanceIds": {
- "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfInstanceNames": {
- "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: * VnfLcmOperationOccurrenceNotification * VnfIdentifierCreationNotification * VnfIdentifierDeletionNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["VnfLcmOperationOccurrenceNotification", "VnfIdentifierCreationNotification", "VnfIdentifierDeletionNotification"]
- }
- },
- "operationTypes": {
- "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": ["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"]
- }
- },
- "operationStates": {
- "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type": "string",
- "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"]
- }
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nInvalid attribute-based filtering parameters. The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions/{subscriptionId}": {
- "parameters": [{
- "name": "subscriptionId",
- "description": "Identifier of this subscription. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new subscription resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Query Subscription Information\n\nThe GET method retrieves information about a subscription by reading an individual subscription resource.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "OK\nThe operation has completed successfully. The response body shall contain a representation of the subscription resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n",
- "type": "object",
- "required": ["id", "callbackUri", "_links"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "vnfInstanceSubscriptionFilter": {
- "description": "This type represents subscription filter criteria to match VNF instances.\n",
- "type": "object",
- "properties": {
- "vnfdIds": {
- "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProvider"],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfProductName"],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": ["vnfSoftwareVersion"],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfInstanceIds": {
- "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfInstanceNames": {
- "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: * VnfLcmOperationOccurrenceNotification * VnfIdentifierCreationNotification * VnfIdentifierDeletionNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["VnfLcmOperationOccurrenceNotification", "VnfIdentifierCreationNotification", "VnfIdentifierDeletionNotification"]
- }
- },
- "operationTypes": {
- "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation.\n",
- "type": "string",
- "enum": ["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"]
- }
- },
- "operationStates": {
- "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type": "array",
- "items": {
- "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type": "string",
- "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"]
- }
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": ["self"],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "URI of the referenced resource.\n",
- "type": "string",
- "format": "url"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "delete": {
- "description": "Terminate Subscription\n\nThe DELETE method terminates an individual subscription.\n",
- "tags": ["Sol003VnfLcm"],
- "parameters": [{
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "204": {
- "description": "No Content\nThe subscription resource was deleted successfully. The response body shall be empty.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- }
- },
- "400": {
- "description": "Bad Request\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or a syntactically incorrect payload body), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\n ---\n\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n ---\n\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code.The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "Forbidden\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. Specifically in case of this task resource, the reason can also be that the task is not supported for the VNF LCM operation occurrence represented by the parent resource, and that the task resource consequently does not exist. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the sourceof the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "Not Found\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request, or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" HTTP header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted in that case.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "Internal Server Error\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond withthis response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 [13] for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- }
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-lcm/pom.xml
deleted file mode 100644
index 5bcc43f2bd..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-lcm/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-lcm</artifactId>
- <name>ETSI SOL003 Life Cycle Management</name>
- <packaging>pom</packaging>
- <modules>
- <module>etsi-sol003-lcm-api</module>
- <module>etsi-sol003-lcm-ext-clients</module>
- <module>etsi-sol003-lcm-adapter</module>
- </modules>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/pom.xml
deleted file mode 100644
index fd4dc0d972..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-pkgm-adapter</artifactId>
- <name>ETSI SOL003 VNF Package Management Adapter</name>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <so.log.level>DEBUG</so.log.level>
- </systemPropertyVariables>
- <rerunFailingTestsCount>2</rerunFailingTestsCount>
- <parallel>suites</parallel>
- <useUnlimitedThreads>false</useUnlimitedThreads>
- <threadCount>1</threadCount>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm-ext-clients</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-common</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.inject</groupId>
- <artifactId>jersey-hk2</artifactId>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-json-jackson</artifactId>
- </dependency>
- <dependency>
- <groupId>org.yaml</groupId>
- <artifactId>snakeyaml</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/ConversionServiceConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/ConversionServiceConfiguration.java
deleted file mode 100644
index fd19d0e0a1..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/ConversionServiceConfiguration.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm;
-
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003.PkgChangeNotificationConverter;
-import org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003.PkgOnboardingNotificationConverter;
-import org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003.VnfPkgInfoConverter;
-import org.onap.so.adapters.etsisol003adapter.pkgm.converters.sol003.etsicatalog.PkgmSubscriptionRequestConverter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.core.convert.support.DefaultConversionService;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class ConversionServiceConfiguration {
-
- private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
-
- @Autowired
- public ConversionServiceConfiguration(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
- }
-
- @Bean
- public ConversionService conversionService() {
- final DefaultConversionService service = new DefaultConversionService();
- service.addConverter(new VnfPkgInfoConverter(vnfmAdapterUrlProvider));
- service.addConverter(new PkgmSubscriptionRequestConverter());
- service.addConverter(new PkgChangeNotificationConverter(vnfmAdapterUrlProvider));
- service.addConverter(new PkgOnboardingNotificationConverter(vnfmAdapterUrlProvider));
- return service;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/PackageManagementConstants.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/PackageManagementConstants.java
deleted file mode 100644
index 5922aab9ca..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/PackageManagementConstants.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm;
-
-/**
- * ETSI SOL003 VNF Package Management Adapter constants
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-public class PackageManagementConstants {
-
- public static final String APPLICATION_ZIP = "application/zip";
-
- /**
- * Name of the subscription cache
- */
- public static final String PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE = "PackageManagementSubscriptionCache";
-
- private PackageManagementConstants() {}
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/AbstractCacheServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/AbstractCacheServiceProvider.java
deleted file mode 100644
index 6dd67faa9e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/AbstractCacheServiceProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.cache;
-
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-
-/**
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-public abstract class AbstractCacheServiceProvider {
-
- private final CacheManager cacheManager;
- private final String cacheName;
-
- public AbstractCacheServiceProvider(final String cacheName, final CacheManager cacheManager) {
- this.cacheName = cacheName;
- this.cacheManager = cacheManager;
- }
-
- public Cache getCache() {
- final Cache cache = cacheManager.getCache(cacheName);
- if (cache == null) {
- throw new CacheNotFoundException("Unable to find " + cacheName + " cache");
- }
- return cache;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheManagerConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheManagerConfiguration.java
deleted file mode 100644
index c184a25bef..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheManagerConfiguration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.cache;
-
-import java.util.Arrays;
-import org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.cache.concurrent.ConcurrentMapCache;
-import org.springframework.cache.support.SimpleCacheManager;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Configuration
-public class CacheManagerConfiguration {
-
- @Bean
- public CacheManager cacheManager() {
- final SimpleCacheManager manager = new SimpleCacheManager();
- manager.setCaches(Arrays.asList(getCache(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE)));
-
- return manager;
- }
-
- private Cache getCache(final String name) {
- return new ConcurrentMapCache(name);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheNotFoundException.java
deleted file mode 100644
index 6b2f4710da..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/CacheNotFoundException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.cache;
-
-/**
- * Exception for failure to find the cache.
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- *
- */
-public class CacheNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = -372361485260755367L;
-
- public CacheNotFoundException(final String message) {
- super(message);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProvider.java
deleted file mode 100644
index 34ed1cfc0c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.cache;
-
-import java.util.Map;
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-
-/**
- * Interface which provides methods for communicating with the cache
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- *
- */
-public interface PkgmCacheServiceProvider {
-
- /**
- * Checks cache if subscription request Id is already present. If not, it adds the subscription to the cache.
- *
- * @param subscriptionId
- * @param pkgmSubscriptionRequest
- */
- void addSubscription(final String subscriptionId, final PkgmSubscriptionRequest pkgmSubscriptionRequest);
-
- /**
- * Gets individual subscription from cache
- *
- * @param subscriptionId
- * @return <AbstractMap.SimpleImmutableEntry<String, PkgmSubscriptionRequest>>
- */
- Optional<PkgmSubscriptionRequest> getSubscription(final String subscriptionId);
-
- /**
- * Gets Map of subscriptions from cache
- *
- * @return Map<String, PkgmSubscriptionRequest>>
- */
- Map<String, PkgmSubscriptionRequest> getSubscriptions();
-
- /**
- * Delete subscription from cache
- *
- * @param subscriptionId
- * @return Boolean
- */
- boolean deleteSubscription(final String subscriptionId);
-
- /**
- * Checks if subscription exists in cache and return its subscriptionId
- *
- * @param pkgmSubscriptionRequest
- * @return Subscription Id
- */
- Optional<String> getSubscriptionId(final PkgmSubscriptionRequest pkgmSubscriptionRequest);
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProviderImpl.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProviderImpl.java
deleted file mode 100644
index 4811132e92..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/cache/PkgmCacheServiceProviderImpl.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.cache;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.stereotype.Service;
-
-/**
- * Implementation which provides methods for communicating with the cache
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Service
-public class PkgmCacheServiceProviderImpl extends AbstractCacheServiceProvider implements PkgmCacheServiceProvider {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(PkgmCacheServiceProviderImpl.class);
-
- @Autowired
- public PkgmCacheServiceProviderImpl(final CacheManager cacheManager) {
- super(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE, cacheManager);
- }
-
- @Override
- public void addSubscription(final String subscriptionId, final PkgmSubscriptionRequest pkgmSubscriptionRequest) {
- LOGGER.debug("Adding {} to cache with subscription id: {}", pkgmSubscriptionRequest, subscriptionId);
- getCache().put(subscriptionId, pkgmSubscriptionRequest);
- }
-
- @Override
- public Optional<PkgmSubscriptionRequest> getSubscription(final String subscriptionId) {
- LOGGER.debug("Getting subscription from cache using Id: {}", subscriptionId);
- final Cache cache = getCache();
- final PkgmSubscriptionRequest cacheValue = cache.get(subscriptionId, PkgmSubscriptionRequest.class);
- if (cacheValue != null) {
- return Optional.of(cacheValue);
- }
- LOGGER.error("Unable to find Subscription in cache using Id: {}", subscriptionId);
- return Optional.empty();
- }
-
- @Override
- public Map<String, PkgmSubscriptionRequest> getSubscriptions() {
- LOGGER.info("Getting all subscriptions from cache");
- final Cache cache = getCache();
-
- final Object nativeCache = cache.getNativeCache();
- if (nativeCache instanceof ConcurrentHashMap) {
- @SuppressWarnings("unchecked")
- final ConcurrentHashMap<Object, Object> concurrentHashMap = (ConcurrentHashMap<Object, Object>) nativeCache;
- final Map<String, PkgmSubscriptionRequest> result = new HashMap<>();
- concurrentHashMap.keySet().forEach(key -> {
- final Optional<PkgmSubscriptionRequest> optional = getSubscription(key.toString());
- optional.ifPresent(pkgmSubscriptionRequest -> result.put(key.toString(), pkgmSubscriptionRequest));
- });
- return result;
- }
- LOGGER.error("Unable to find Subscriptions in cache");
- return Collections.emptyMap();
- }
-
- @Override
- public boolean deleteSubscription(final String subscriptionId) {
- final Cache cache = getCache();
- final Optional<PkgmSubscriptionRequest> optional = getSubscription(subscriptionId);
- if (optional.isPresent()) {
- cache.evict(subscriptionId);
- return true;
- }
- return false;
- }
-
- @Override
- public Optional<String> getSubscriptionId(final PkgmSubscriptionRequest pkgmSubscriptionRequest) {
- final Cache cache = getCache();
- final Object nativeCache = cache.getNativeCache();
- if (nativeCache instanceof ConcurrentHashMap) {
- @SuppressWarnings("unchecked")
- final ConcurrentHashMap<Object, Object> concurrentHashMap = (ConcurrentHashMap<Object, Object>) nativeCache;
- final Optional<Entry<Object, Object>> optional = concurrentHashMap.entrySet().stream()
- .filter(entry -> entry.getValue().equals(pkgmSubscriptionRequest)).findAny();
- if (optional.isPresent()) {
- return Optional.of(optional.get().getKey().toString());
- }
- }
- return Optional.empty();
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java
deleted file mode 100644
index 5f2ee1d5ab..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003;
-
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgmLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage;
-
-/**
- * A base class that can be extended by classes for converting Etsi Catalog Manager Pkg Notification classes. Provides
- * common methods that will be useful to those classes.
- *
- * @author andrew.a.lamb@est.tech
- */
-abstract public class AbstractPkgNotificationConverter {
-
- private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
-
- public AbstractPkgNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
- }
-
- protected URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks convert(
- final PkgmLinks pkgmLinks, final String vnfPkgId, final String subscriptionId) {
- final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksVnfPackage =
- new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage();
- if (pkgmLinks.getVnfPackage() != null) {
- linksVnfPackage.setHref(vnfmAdapterUrlProvider.getVnfPackageUrl(vnfPkgId));
- }
-
- final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksSubscription =
- new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage();
- if (pkgmLinks.getSubscription() != null) {
- linksSubscription.setHref(vnfmAdapterUrlProvider.getSubscriptionUriString(subscriptionId));
- }
-
- final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks links =
- new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks();
- links.setVnfPackage(linksVnfPackage);
- links.setSubscription(linksSubscription);
- return links;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java
deleted file mode 100644
index 5787d35b9a..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageChangeNotification;
-import org.slf4j.Logger;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.stereotype.Service;
-
-/**
- * Converter to convert from an Etsi Catalog Manager {@link PkgChangeNotification} Object to its equivalent SOL003
- * {@link VnfPackageChangeNotification} Object
- *
- * @author andrew.a.lamb@est.tech
- */
-@Service
-public class PkgChangeNotificationConverter extends AbstractPkgNotificationConverter
- implements Converter<PkgChangeNotification, VnfPackageChangeNotification> {
- private static final Logger logger = getLogger(PkgChangeNotificationConverter.class);
-
- public PkgChangeNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- super(vnfmAdapterUrlProvider);
- }
-
- /**
- * Convert a {@link PkgChangeNotification} Object to an {@link VnfPackageChangeNotification} Object
- *
- * @param pkgChangeNotification The PkgChangeNotification Object to Convert
- * @return The Converted VnfPackageChangeNotification Object
- */
- @Override
- public VnfPackageChangeNotification convert(final PkgChangeNotification pkgChangeNotification) {
- logger.info("Converting PkgChangeNotification\n{}", pkgChangeNotification.toString());
- final VnfPackageChangeNotification vnfPackageChangeNotification = new VnfPackageChangeNotification();
- vnfPackageChangeNotification.setId(pkgChangeNotification.getId());
-
- if (pkgChangeNotification.getNotificationType() != null) {
- vnfPackageChangeNotification.setNotificationType(VnfPackageChangeNotification.NotificationTypeEnum
- .fromValue(pkgChangeNotification.getNotificationType().getValue()));
- }
-
- vnfPackageChangeNotification.setSubscriptionId(pkgChangeNotification.getSubscriptionId());
- vnfPackageChangeNotification.setTimeStamp(pkgChangeNotification.getTimeStamp());
- vnfPackageChangeNotification.setVnfPkgId(pkgChangeNotification.getVnfPkgId());
-
- vnfPackageChangeNotification.setVnfdId(pkgChangeNotification.getVnfdId());
-
- if (pkgChangeNotification.getChangeType() != null) {
- vnfPackageChangeNotification.setChangeType(VnfPackageChangeNotification.ChangeTypeEnum
- .fromValue(pkgChangeNotification.getChangeType().getValue()));
- }
-
- if (pkgChangeNotification.getOperationalState() != null) {
- vnfPackageChangeNotification.setOperationalState(VnfPackageChangeNotification.OperationalStateEnum
- .fromValue(pkgChangeNotification.getOperationalState().getValue()));
- }
-
- vnfPackageChangeNotification.setLinks(convert(pkgChangeNotification.getLinks(),
- pkgChangeNotification.getVnfPkgId(), pkgChangeNotification.getSubscriptionId()));
-
- return vnfPackageChangeNotification;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java
deleted file mode 100644
index 96a5d827e6..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageOnboardingNotification;
-import org.slf4j.Logger;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.stereotype.Service;
-
-/**
- * Converter to convert from an Etsi Catalog Manager {@link PkgOnboardingNotification} Object to its equivalent SOL003
- * {@link VnfPackageOnboardingNotification} Object
- *
- * @author andrew.a.lamb@est.tech
- */
-@Service
-public class PkgOnboardingNotificationConverter extends AbstractPkgNotificationConverter
- implements Converter<PkgOnboardingNotification, VnfPackageOnboardingNotification> {
- private static final Logger logger = getLogger(PkgOnboardingNotificationConverter.class);
-
- public PkgOnboardingNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- super(vnfmAdapterUrlProvider);
- }
-
-
- /**
- * Convert a {@link PkgOnboardingNotification} Object to an {@link VnfPackageOnboardingNotification} Object
- *
- * @param pkgOnboardingNotification The PkgOnboardingNotification Object to Convert
- * @return The Converted VnfPackageOnboardingNotification Object
- */
- @Override
- public VnfPackageOnboardingNotification convert(final PkgOnboardingNotification pkgOnboardingNotification) {
- logger.info("Converting PkgChangeNotification\n{}", pkgOnboardingNotification.toString());
- final VnfPackageOnboardingNotification vnfPackageOnboardingNotification =
- new VnfPackageOnboardingNotification();
- vnfPackageOnboardingNotification.setId(pkgOnboardingNotification.getId());
-
- if (pkgOnboardingNotification.getNotificationType() != null) {
- vnfPackageOnboardingNotification.setNotificationType(VnfPackageOnboardingNotification.NotificationTypeEnum
- .fromValue(pkgOnboardingNotification.getNotificationType().getValue()));
- }
-
- vnfPackageOnboardingNotification.setSubscriptionId(pkgOnboardingNotification.getSubscriptionId());
- vnfPackageOnboardingNotification.setTimeStamp(pkgOnboardingNotification.getTimeStamp());
- vnfPackageOnboardingNotification.setVnfPkgId(pkgOnboardingNotification.getVnfPkgId());
- vnfPackageOnboardingNotification.setVnfdId(pkgOnboardingNotification.getVnfdId());
-
- vnfPackageOnboardingNotification.setLinks(convert(pkgOnboardingNotification.getLinks(),
- pkgOnboardingNotification.getVnfPkgId(), pkgOnboardingNotification.getSubscriptionId()));
-
- return vnfPackageOnboardingNotification;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/VnfPkgInfoConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/VnfPkgInfoConverter.java
deleted file mode 100644
index 0121cc5885..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/etsicatalog/sol003/VnfPkgInfoConverter.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.converters.etsicatalog.sol003;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.Checksum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VNFPKGMLinkSerializer;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPackageArtifactInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPackageSoftwareImageInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesAdditionalArtifacts;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesChecksum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesLinksSelf;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesSoftwareImages;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.stereotype.Service;
-
-/**
- * Converter to convert from an Etsi Catalog Manager {@link VnfPkgInfo} Object to its equivalent SOL003 Object
- * {@link InlineResponse2001} Object
- *
- * @author andrew.a.lamb@est.tech
- */
-@Service
-public class VnfPkgInfoConverter implements Converter<VnfPkgInfo, InlineResponse2001> {
- private static final Logger logger = LoggerFactory.getLogger(VnfPkgInfoConverter.class);
- private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
-
- public VnfPkgInfoConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
- }
-
- /**
- * Convert a {@link VnfPkgInfo} Object to an {@link InlineResponse2001} Object
- *
- * @param vnfPkgInfo The VnfPkgInfo Object to Convert
- * @return The Converted InlineResponse2001 Object
- */
- @Override
- public InlineResponse2001 convert(final VnfPkgInfo vnfPkgInfo) {
- if (vnfPkgInfo == null) {
- logger.error("No VnfPkgInfo Object Provided for Conversion. (Null object received, returning Null)");
- return null;
- }
- final InlineResponse2001 response = new InlineResponse2001();
- response.setId(vnfPkgInfo.getId());
- response.setVnfdId(vnfPkgInfo.getVnfdId());
- response.setVnfProvider(vnfPkgInfo.getVnfProvider());
- response.setVnfProductName(vnfPkgInfo.getVnfProductName());
- response.setVnfSoftwareVersion(vnfPkgInfo.getVnfSoftwareVersion());
- response.setVnfdVersion(vnfPkgInfo.getVnfdVersion());
- response.setChecksum(convertChecksumToVnfPackagesChecksum(vnfPkgInfo.getChecksum()));
- response.setSoftwareImages(
- convertVnfPackageSoftwareImageInfoListToVnfPackagesSoftwareImagesList(vnfPkgInfo.getSoftwareImages()));
- response.setAdditionalArtifacts(convertVnfPackageArtifactInfoListToVnfPackagesAdditionalArtifactsList(
- vnfPkgInfo.getAdditionalArtifacts()));
-
- if (vnfPkgInfo.getOnboardingState() != null) {
- response.setOnboardingState(
- InlineResponse2001.OnboardingStateEnum.fromValue(vnfPkgInfo.getOnboardingState().getValue()));
- }
-
- if (vnfPkgInfo.getOperationalState() != null) {
- response.setOperationalState(
- InlineResponse2001.OperationalStateEnum.fromValue(vnfPkgInfo.getOperationalState().getValue()));
- }
-
- response.setUserDefinedData((vnfPkgInfo.getUserDefinedData()));
-
- if (vnfPkgInfo.getLinks() != null) {
- response.setLinks(getVnfPackagesLinks(vnfPkgInfo.getLinks(), vnfPkgInfo.getId()));
- }
-
- return response;
- }
-
- private VnfPackagesChecksum convertChecksumToVnfPackagesChecksum(final Checksum checksum) {
- final VnfPackagesChecksum vnfPackagesChecksum = new VnfPackagesChecksum();
- if (checksum != null) {
- vnfPackagesChecksum.setAlgorithm(checksum.getAlgorithm());
- vnfPackagesChecksum.setHash(checksum.getHash());
- }
- return vnfPackagesChecksum;
- }
-
- private List<VnfPackagesSoftwareImages> convertVnfPackageSoftwareImageInfoListToVnfPackagesSoftwareImagesList(
- final List<VnfPackageSoftwareImageInfo> vnfPackageSoftwareImageInfoList) {
- final List<VnfPackagesSoftwareImages> vnfPackagesSoftwareImages = new ArrayList<>();
- if (vnfPackageSoftwareImageInfoList != null) {
- for (final VnfPackageSoftwareImageInfo vnfPackageSoftwareImageInfo : vnfPackageSoftwareImageInfoList) {
- final VnfPackagesSoftwareImages softwareImage =
- convertVnfPackageSoftwareImageInfoToVnfPackagesSoftwareImages(vnfPackageSoftwareImageInfo);
- vnfPackagesSoftwareImages.add(softwareImage);
- }
- }
- return vnfPackagesSoftwareImages;
- }
-
- private VnfPackagesSoftwareImages convertVnfPackageSoftwareImageInfoToVnfPackagesSoftwareImages(
- final VnfPackageSoftwareImageInfo vnfPackageSoftwareImageInfo) {
- final VnfPackagesSoftwareImages vnfPackagesSoftwareImages = new VnfPackagesSoftwareImages();
- vnfPackagesSoftwareImages.setId(vnfPackageSoftwareImageInfo.getId());
- vnfPackagesSoftwareImages.setName(vnfPackageSoftwareImageInfo.getName());
- vnfPackagesSoftwareImages.setProvider(vnfPackageSoftwareImageInfo.getProvider());
- vnfPackagesSoftwareImages.setVersion(vnfPackageSoftwareImageInfo.getVersion());
- vnfPackagesSoftwareImages
- .setChecksum(convertChecksumToVnfPackagesChecksum(vnfPackageSoftwareImageInfo.getChecksum()));
- if (vnfPackageSoftwareImageInfo.getContainerFormat() != null) {
- vnfPackagesSoftwareImages.setContainerFormat(VnfPackagesSoftwareImages.ContainerFormatEnum
- .fromValue(vnfPackageSoftwareImageInfo.getContainerFormat().getValue()));
- }
-
- if (vnfPackageSoftwareImageInfo.getDiskFormat() != null) {
- vnfPackagesSoftwareImages.setDiskFormat(VnfPackagesSoftwareImages.DiskFormatEnum
- .fromValue(vnfPackageSoftwareImageInfo.getDiskFormat().getValue()));
- }
-
- vnfPackagesSoftwareImages.setCreatedAt(vnfPackageSoftwareImageInfo.getCreatedAt());
- vnfPackagesSoftwareImages.setMinDisk(vnfPackageSoftwareImageInfo.getMinDisk());
- vnfPackagesSoftwareImages.setMinRam(vnfPackageSoftwareImageInfo.getMinRam());
- vnfPackagesSoftwareImages.setSize(vnfPackageSoftwareImageInfo.getSize());
- vnfPackagesSoftwareImages.setUserMetadata(vnfPackageSoftwareImageInfo.getUserMetadata());
- vnfPackagesSoftwareImages.setImagePath(vnfPackageSoftwareImageInfo.getImagePath());
- return vnfPackagesSoftwareImages;
- }
-
- private List<VnfPackagesAdditionalArtifacts> convertVnfPackageArtifactInfoListToVnfPackagesAdditionalArtifactsList(
- final List<VnfPackageArtifactInfo> vnfPackageArtifactInfoList) {
- if (vnfPackageArtifactInfoList != null) {
- final List<VnfPackagesAdditionalArtifacts> additionalArtifacts = new ArrayList<>();
- for (final VnfPackageArtifactInfo artifactInfo : vnfPackageArtifactInfoList) {
- final VnfPackagesAdditionalArtifacts artifact =
- convertVnfPackageArtifactInfoToVnfPackagesAdditionalArtifacts(artifactInfo);
- additionalArtifacts.add(artifact);
- }
- return additionalArtifacts;
- }
- return null;
- }
-
- private VnfPackagesAdditionalArtifacts convertVnfPackageArtifactInfoToVnfPackagesAdditionalArtifacts(
- final VnfPackageArtifactInfo vnfPackageArtifactInfo) {
- final VnfPackagesAdditionalArtifacts vnfPackagesAdditionalArtifacts = new VnfPackagesAdditionalArtifacts();
- vnfPackagesAdditionalArtifacts.setArtifactPath(vnfPackageArtifactInfo.getArtifactPath());
- vnfPackagesAdditionalArtifacts
- .setChecksum(convertChecksumToVnfPackagesChecksum(vnfPackageArtifactInfo.getChecksum()));
- vnfPackagesAdditionalArtifacts.setMetadata(vnfPackageArtifactInfo.getMetadata());
- return vnfPackagesAdditionalArtifacts;
- }
-
- private VnfPackagesLinks getVnfPackagesLinks(final VNFPKGMLinkSerializer links, final String vnfPkgId) {
- final VnfPackagesLinks vnfPackagesLinks = new VnfPackagesLinks();
-
- if (links.getSelf() != null) {
- vnfPackagesLinks.setSelf(getVnfPackagesLinksSelf(vnfmAdapterUrlProvider.getVnfPackageUrl(vnfPkgId)));
- }
-
- if (links.getVnfd() != null) {
- vnfPackagesLinks.setVnfd(getVnfPackagesLinksSelf(vnfmAdapterUrlProvider.getVnfPackageVnfdUrl(vnfPkgId)));
- }
-
- if (links.getPackageContent() != null) {
- vnfPackagesLinks.setPackageContent(
- getVnfPackagesLinksSelf(vnfmAdapterUrlProvider.getVnfPackageContentUrl(vnfPkgId)));
- }
-
- return vnfPackagesLinks;
- }
-
- private VnfPackagesLinksSelf getVnfPackagesLinksSelf(final String href) {
- return new VnfPackagesLinksSelf().href(href);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/sol003/etsicatalog/PkgmSubscriptionRequestConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/sol003/etsicatalog/PkgmSubscriptionRequestConverter.java
deleted file mode 100644
index f63ada9c75..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/converters/sol003/etsicatalog/PkgmSubscriptionRequestConverter.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.converters.sol003.etsicatalog;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.Version;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfProducts;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfProductsProviders;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilter1;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilter1.NotificationTypesEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilter1.OperationalStateEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilter1.UsageStateEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilterVersions;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilterVnfProducts;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilterVnfProductsFromProviders;
-import org.springframework.core.convert.converter.Converter;
-import org.springframework.stereotype.Service;
-
-/**
- * Converter to convert from an Etsi Catalog Manager {@link PkgmSubscriptionRequest} Object to its equivalent ETSI
- * Catalog Manager Object
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Service
-public class PkgmSubscriptionRequestConverter implements
- Converter<PkgmSubscriptionRequest, org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest> {
-
- @Override
- public org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest convert(
- final PkgmSubscriptionRequest pkgmSubscriptionRequest) {
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest =
- new org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest();
-
- etsiCatalogManagerSubscriptionRequest
- .setFilter(getPkgmNotificationsFilter(pkgmSubscriptionRequest.getFilter()));
-
- return etsiCatalogManagerSubscriptionRequest;
- }
-
-
- private org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter getPkgmNotificationsFilter(
- final SubscriptionsFilter1 sol003SubscriptionsFilter) {
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter etsiCatalogManagerFilters =
- new org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter();
-
- if (sol003SubscriptionsFilter.getNotificationTypes() != null) {
- etsiCatalogManagerFilters.setNotificationTypes(
- getPkgmNotificationsFilterNotificationTypes(sol003SubscriptionsFilter.getNotificationTypes()));
- }
-
- etsiCatalogManagerFilters.setVnfProductsFromProviders(
- getVnfProductsProviders(sol003SubscriptionsFilter.getVnfProductsFromProviders()));
-
- etsiCatalogManagerFilters.setVnfdId(getVnfdIds(sol003SubscriptionsFilter.getVnfdId()));
-
- etsiCatalogManagerFilters.setVnfPkgId(getVnfPkgIds(sol003SubscriptionsFilter.getVnfPkgId()));
-
- etsiCatalogManagerFilters
- .setOperationalState(getOperationalState(sol003SubscriptionsFilter.getOperationalState()));
-
- etsiCatalogManagerFilters.setUsageState(getUsageState(sol003SubscriptionsFilter.getUsageState()));
-
- return etsiCatalogManagerFilters;
- }
-
-
- private List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.UsageStateEnum> getUsageState(
- final List<UsageStateEnum> usageStates) {
- if (usageStates != null) {
- final List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.UsageStateEnum> etsiCatalogUsageStates =
- new ArrayList<>();
- usageStates.stream().forEach(state -> {
- etsiCatalogUsageStates.add(
- org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.UsageStateEnum
- .fromValue(state.getValue()));
- });
- return etsiCatalogUsageStates;
- }
- return Collections.emptyList();
- }
-
-
- private List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum> getOperationalState(
- final List<OperationalStateEnum> operationalStates) {
- if (operationalStates != null) {
- final List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum> etsiCatalogOperationalStates =
- new ArrayList<>();
- operationalStates.forEach(state -> {
- etsiCatalogOperationalStates.add(
- org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum
- .fromValue(state.getValue()));
- });
-
- return etsiCatalogOperationalStates;
- }
- return Collections.emptyList();
- }
-
- private List<String> getVnfPkgIds(final List<String> vnfPkgId) {
- if (vnfPkgId != null) {
- final List<String> etsiCatalogManagerVnfPkgId = new ArrayList<>();
- vnfPkgId.forEach(type -> {
- etsiCatalogManagerVnfPkgId.add(type);
- });
- return etsiCatalogManagerVnfPkgId;
- }
- return Collections.emptyList();
- }
-
- private List<String> getVnfdIds(final List<String> vnfdId) {
- if (vnfdId != null) {
- final List<String> etsiCatalogManagerVnfdId = new ArrayList<>();
- vnfdId.forEach(type -> {
- etsiCatalogManagerVnfdId.add(type);
- });
- return etsiCatalogManagerVnfdId;
- }
- return Collections.emptyList();
- }
-
- private List<VnfProductsProviders> getVnfProductsProviders(
- final List<SubscriptionsFilterVnfProductsFromProviders> filterProductsFromProvider) {
-
- if (filterProductsFromProvider != null && !filterProductsFromProvider.isEmpty()) {
- final List<VnfProductsProviders> etsiCatalogManagerVnfProductsProviders = new ArrayList<>();
- filterProductsFromProvider.forEach(vnfProduct -> {
- etsiCatalogManagerVnfProductsProviders
- .add(new VnfProductsProviders().vnfProvider(vnfProduct.getVnfProvider())
- .vnfProducts(getVnfProducts(vnfProduct.getVnfProducts())));
- });
- return etsiCatalogManagerVnfProductsProviders;
- }
- return Collections.emptyList();
- }
-
- private List<VnfProducts> getVnfProducts(final List<SubscriptionsFilterVnfProducts> sol003VnfProducts) {
- if (sol003VnfProducts != null) {
- final List<VnfProducts> etsiCatalogManagerVnfProductsList = new ArrayList<>();
- sol003VnfProducts.forEach(vnfProduct -> {
- etsiCatalogManagerVnfProductsList.add(new VnfProducts().vnfProductName(vnfProduct.getVnfProductName())
- .versions(getVersion(vnfProduct.getVersions())));
- });
- return etsiCatalogManagerVnfProductsList;
- }
- return Collections.emptyList();
- }
-
- private List<Version> getVersion(final List<SubscriptionsFilterVersions> sol003FilterVersions) {
- if (sol003FilterVersions != null && !sol003FilterVersions.isEmpty()) {
- final List<Version> etsiCatalogVersionList = new ArrayList<>();
- sol003FilterVersions.forEach(vnfFilterVersion -> {
- etsiCatalogVersionList.add(new Version().vnfSoftwareVersion(vnfFilterVersion.getVnfSoftwareVersion())
- .vnfdVersions(vnfFilterVersion.getVnfdVersions()));
- });
- return etsiCatalogVersionList;
- }
- return Collections.emptyList();
- }
-
- private List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> getPkgmNotificationsFilterNotificationTypes(
- final List<NotificationTypesEnum> notificationTypes) {
-
- if (notificationTypes != null && !notificationTypes.isEmpty()) {
- final List<org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> etsiCatalogNotificationTypes =
- new ArrayList<>();
- notificationTypes.forEach(type -> etsiCatalogNotificationTypes.add(
- org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum
- .fromValue(type.getValue())));
- return etsiCatalogNotificationTypes;
- }
- return Collections.emptyList();
- }
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java
deleted file mode 100644
index db3c24bd1c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2001;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface EtsiCatalogPackageManagementServiceProvider {
-
- /**
- * GET Package Content, from VNF Package.
- *
- * @param vnfPkgId The ID of the VNF Package from which the "package_content" will be retrieved.
- * @return The Package Content of a VNF Package ("vnfPkgId").
- */
- Optional<byte[]> getVnfPackageContent(final String vnfPkgId);
-
- /**
- * GET VNF packages information from ETSI Catalog. Will return zero or more VNF package representations.
- *
- * @return An Array of all VNF packages retrieved from the ETSI Catalog.
- */
- Optional<InlineResponse2001[]> getVnfPackages();
-
- /**
- * GET specific VNF package information from ETSI Catalog.
- *
- * @param vnfPkgId The ID of the VNF Package that you want to query.
- * @return The VNF package retrieved from the ETSI Catalog
- */
- Optional<InlineResponse2001> getVnfPackage(final String vnfPkgId);
-
- /**
- * GET specific VNF package VNFD from ETSI Catalog.
- *
- * @param vnfPkgId The ID of the VNF Package that you want to query.
- * @return The VNF package retrieved from the ETSI Catalog
- */
- Optional<byte[]> getVnfPackageVnfd(final String vnfPkgId);
-
- /**
- * GET Package Artifact, from VNF Package.
- *
- * @param vnfPkgId The ID of the VNF Package from which the artifact will be retrieved.
- * @param artifactPath Sequence of one or more path segments representing the path of the artifact within the VNF
- * Package, e.g., foo/bar/run.sh
- * @return The Package Artifact of a VNF Package ("vnfPkgId", "artifactPath").
- */
- Optional<byte[]> getVnfPackageArtifact(final String vnfPkgId, final String artifactPath);
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProvider.java
deleted file mode 100644
index f11fc5c39a..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProvider.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-/**
- * Provides methods for invoking REST calls to the ETSI Catalog Manager.
- *
- * @author gareth.roper@est.tech
- */
-public interface EtsiCatalogServiceProvider
- extends EtsiCatalogSubscriptionServiceProvider, EtsiCatalogPackageManagementServiceProvider {
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java
deleted file mode 100644
index 1ff3672df9..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
-import java.util.concurrent.TimeUnit;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.onap.logging.filter.spring.SpringClientPayloadFilter;
-import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.configuration.rest.HttpClientConnectionConfiguration;
-import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * Configures the HttpRestServiceProvider to make REST calls to the ETSI Catalog Manager
- *
- * @author gareth.roper@est.tech
- */
-
-@Configuration
-public class EtsiCatalogServiceProviderConfiguration extends AbstractServiceProviderConfiguration {
-
- public static final String ETSI_CATALOG_REST_TEMPLATE_BEAN = "etsiCatalogRestTemplate";
-
- public static final String ETSI_CATALOG_SERVICE_PROVIDER_BEAN = "etsiCatalogServiceProvider";
-
- private final static Logger LOGGER = LoggerFactory.getLogger(EtsiCatalogServiceProviderConfiguration.class);
-
- private final HttpClientConnectionConfiguration clientConnectionConfiguration;
-
- @Value("${etsi-catalog-manager.http.client.ssl.trust-store:#{null}}")
- private Resource trustStore;
- @Value("${etsi-catalog-manager.http.client.ssl.trust-store-password:#{null}}")
- private String trustStorePassword;
-
- @Autowired
- public EtsiCatalogServiceProviderConfiguration(
- final HttpClientConnectionConfiguration clientConnectionConfiguration) {
- this.clientConnectionConfiguration = clientConnectionConfiguration;
- }
-
- @Bean
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- public RestTemplate etsiCatalogRestTemplate() {
- final RestTemplate restTemplate = new RestTemplate();
- restTemplate.getInterceptors().add(new SOSpringClientFilter());
- restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
- return restTemplate;
- }
-
- @Bean
- @Qualifier(ETSI_CATALOG_SERVICE_PROVIDER_BEAN)
- public HttpRestServiceProvider etsiCatalogHttpRestServiceProvider(
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN) final RestTemplate restTemplate) {
- setGsonMessageConverter(restTemplate);
-
- final HttpClientBuilder httpClientBuilder = getHttpClientBuilder();
- if (trustStore != null) {
- try {
- LOGGER.debug("Setting up HttpComponentsClientHttpRequestFactory with SSL Context");
- LOGGER.debug("Setting client trust-store: {}", trustStore.getURL());
- LOGGER.debug("Creating SSLConnectionSocketFactory with AllowAllHostsVerifier ... ");
- final SSLContext sslContext = new SSLContextBuilder()
- .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray()).build();
- final SSLConnectionSocketFactory sslConnectionSocketFactory =
- new SSLConnectionSocketFactory(sslContext, AllowAllHostsVerifier.INSTANCE);
- httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory);
- final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
- .<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE)
- .register("https", sslConnectionSocketFactory).build();
-
- httpClientBuilder.setConnectionManager(getConnectionManager(socketFactoryRegistry));
- } catch (final KeyManagementException | NoSuchAlgorithmException | KeyStoreException | CertificateException
- | IOException exception) {
- LOGGER.error("Error reading truststore, TLS connection will fail.", exception);
- }
-
- } else {
- LOGGER.debug("Setting connection manager without SSL ConnectionSocketFactory ...");
- httpClientBuilder.setConnectionManager(getConnectionManager());
- }
-
- final HttpComponentsClientHttpRequestFactory factory =
- new HttpComponentsClientHttpRequestFactory(httpClientBuilder.build());
- restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(factory));
-
- return new HttpRestServiceProviderImpl(restTemplate, new BasicHttpHeadersProvider().getHttpHeaders());
- }
-
- private PoolingHttpClientConnectionManager getConnectionManager(
- final Registry<ConnectionSocketFactory> socketFactoryRegistry) {
- return new PoolingHttpClientConnectionManager(socketFactoryRegistry, null, null, null,
- clientConnectionConfiguration.getTimeToLiveInMins(), TimeUnit.MINUTES);
- }
-
- private PoolingHttpClientConnectionManager getConnectionManager() {
- return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(),
- TimeUnit.MINUTES);
- }
-
- private HttpClientBuilder getHttpClientBuilder() {
- return HttpClientBuilder.create().setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute())
- .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections())
- .setDefaultRequestConfig(getRequestConfig());
- }
-
- private RequestConfig getRequestConfig() {
- return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds())
- .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build();
- }
-
- private static final class AllowAllHostsVerifier implements HostnameVerifier {
-
- private static final AllowAllHostsVerifier INSTANCE = new AllowAllHostsVerifier();
-
- @Override
- public boolean verify(final String hostname, final SSLSession session) {
- LOGGER.debug("Skipping hostname verification ...");
- return true;
- }
-
- }
-
- @Override
- protected Gson getGson() {
- return new JSON().getGson();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderImpl.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderImpl.java
deleted file mode 100644
index a4e5550061..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderImpl.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-import static org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_SERVICE_PROVIDER_BEAN;
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.EtsiCatalogManagerBadRequestException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.SubscriptionNotFoundException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.VnfPkgBadRequestException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.VnfPkgConflictException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.VnfPkgNotFoundException;
-import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
-import org.onap.so.rest.exceptions.InvalidRestRequestException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-/**
- * Provides the implementations of the REST Requests to the ETSI Catalog Manager.
- *
- * @author gareth.roper@est.tech
- */
-@Service
-public class EtsiCatalogServiceProviderImpl implements EtsiCatalogServiceProvider {
- private static final Logger logger = LoggerFactory.getLogger(EtsiCatalogServiceProviderImpl.class);
-
- private final HttpRestServiceProvider httpServiceProvider;
- private final EtsiCatalogUrlProvider etsiCatalogUrlProvider;
- private final ConversionService conversionService;
-
- @Autowired
- public EtsiCatalogServiceProviderImpl(final EtsiCatalogUrlProvider etsiCatalogUrlProvider,
- @Qualifier(ETSI_CATALOG_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider,
- final ConversionService conversionService) {
- this.etsiCatalogUrlProvider = etsiCatalogUrlProvider;
- this.httpServiceProvider = httpServiceProvider;
- this.conversionService = conversionService;
- }
-
- @Override
- public Optional<byte[]> getVnfPackageContent(final String vnfPkgId)
- throws EtsiCatalogManagerRequestFailureException {
- final String vnfRequestUrl = etsiCatalogUrlProvider.getVnfPackageContentUrl(vnfPkgId);
- final String vnfRequestName = "getVnfPackageContent";
- return requestVnfElement(vnfPkgId, vnfRequestUrl, vnfRequestName);
- }
-
- @Override
- public Optional<byte[]> getVnfPackageArtifact(final String vnfPkgId, final String artifactPath) {
- try {
- final ResponseEntity<byte[]> response = httpServiceProvider.getHttpResponse(
- etsiCatalogUrlProvider.getVnfPackageArtifactUrl(vnfPkgId, artifactPath), byte[].class);
- logger.info("getVnfPackageArtifact Request to ETSI Catalog Manager Status Code: {}",
- response.getStatusCodeValue());
- if (response.getStatusCode().is2xxSuccessful()) {
- return Optional.ofNullable(response.getBody());
- }
- } catch (final HttpResouceNotFoundException httpResouceNotFoundException) {
- logger.error("Caught HttpResouceNotFoundException", httpResouceNotFoundException);
- throw new VnfPkgNotFoundException("No Vnf Package Artifact found with vnfPkgId: \"" + vnfPkgId
- + "\" and artifactPath: \"" + artifactPath + "\".");
- } catch (final RestProcessingException restProcessingException) {
- logger.error("Caught RestProcessingException with Status Code: {}", restProcessingException.getStatusCode(),
- restProcessingException);
- if (restProcessingException.getStatusCode() == HttpStatus.CONFLICT.value()) {
- throw new VnfPkgConflictException("A conflict occurred with the state of the resource,\n"
- + "due to the attribute: onboardingState not being set to ONBOARDED.");
- }
- }
- throw new EtsiCatalogManagerRequestFailureException("Internal Server Error Occurred.");
- }
-
- @Override
- public Optional<InlineResponse2001[]> getVnfPackages() {
- try {
- final ResponseEntity<VnfPkgInfo[]> response =
- httpServiceProvider.getHttpResponse(etsiCatalogUrlProvider.getVnfPackagesUrl(), VnfPkgInfo[].class);
- logger.info("getVnfPackages Request to ETSI Catalog Manager Status Code: {}",
- response.getStatusCodeValue());
- if (response.getStatusCode().is2xxSuccessful()) {
- if (response.hasBody()) {
- final VnfPkgInfo[] vnfPackages = response.getBody();
- assert (vnfPackages != null);
- final InlineResponse2001[] responses = new InlineResponse2001[vnfPackages.length];
- for (int index = 0; index < vnfPackages.length; index++) {
- if (conversionService.canConvert(vnfPackages[index].getClass(), InlineResponse2001.class)) {
- final InlineResponse2001 inlineResponse2001 =
- conversionService.convert(vnfPackages[index], InlineResponse2001.class);
- if (inlineResponse2001 != null) {
- responses[index] = inlineResponse2001;
- }
- } else {
- logger.error("Unable to find Converter for response class: {}",
- vnfPackages[index].getClass());
- }
- }
- return Optional.of(responses);
- }
- logger.error("Received response without body ...");
- }
- logger.error("Unexpected status code received {}", response.getStatusCode());
- return Optional.empty();
- } catch (final InvalidRestRequestException invalidRestRequestException) {
- logger.error("Caught InvalidRestRequestException", invalidRestRequestException);
- throw new VnfPkgBadRequestException("Error: Bad Request Received");
- } catch (final HttpResouceNotFoundException httpResouceNotFoundException) {
- logger.error("Caught HttpResouceNotFoundException", httpResouceNotFoundException);
- throw new VnfPkgNotFoundException("No Vnf Packages found");
- } catch (final RestProcessingException restProcessingException) {
- logger.error("Caught RestProcessingException with Status Code: {}", restProcessingException.getStatusCode(),
- restProcessingException);
- throw new EtsiCatalogManagerRequestFailureException("Internal Server Error Occurred.");
- }
- }
-
- @Override
- public Optional<InlineResponse2001> getVnfPackage(final String vnfPkgId) {
- try {
- final ResponseEntity<VnfPkgInfo> response = httpServiceProvider
- .getHttpResponse(etsiCatalogUrlProvider.getVnfPackageUrl(vnfPkgId), VnfPkgInfo.class);
- logger.info("getVnfPackage Request for vnfPkgId {} to ETSI Catalog Manager Status Code: {}", vnfPkgId,
- response.getStatusCodeValue());
- if (response.getStatusCode().is2xxSuccessful()) {
- if (response.hasBody()) {
- final VnfPkgInfo vnfPkgInfo = response.getBody();
- if (conversionService.canConvert(vnfPkgInfo.getClass(), InlineResponse2001.class)) {
- return Optional.ofNullable(conversionService.convert(vnfPkgInfo, InlineResponse2001.class));
- }
- logger.error("Unable to find Converter for response class: {}", vnfPkgInfo.getClass());
- }
- logger.error("Received response without body ....");
- }
- return Optional.empty();
- } catch (final InvalidRestRequestException invalidRestRequestException) {
- logger.error("Caught InvalidRestRequestException", invalidRestRequestException);
- throw new VnfPkgBadRequestException("Error: Bad Request Received");
- } catch (final HttpResouceNotFoundException httpResouceNotFoundException) {
- logger.error("Caught HttpResouceNotFoundException", httpResouceNotFoundException);
- throw new VnfPkgNotFoundException("No Vnf Package found with vnfPkgId: " + vnfPkgId);
- } catch (final RestProcessingException restProcessingException) {
- logger.error("Caught RestProcessingException with Status Code: {}", restProcessingException.getStatusCode(),
- restProcessingException);
- throw new EtsiCatalogManagerRequestFailureException("Internal Server Error Occurred.");
- }
- }
-
- @Override
- public Optional<byte[]> getVnfPackageVnfd(final String vnfPkgId) {
- final String vnfRequestUrl = etsiCatalogUrlProvider.getVnfPackageVnfdUrl(vnfPkgId);
- final String vnfRequestName = "getVnfPackageVnfd";
- return requestVnfElement(vnfPkgId, vnfRequestUrl, vnfRequestName);
- }
-
- @Override
- public Optional<PkgmSubscription> postSubscription(
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest) {
- try {
- final ResponseEntity<PkgmSubscription> responseEntity =
- httpServiceProvider.postHttpRequest(etsiCatalogManagerSubscriptionRequest,
- etsiCatalogUrlProvider.getSubscriptionUrl(), PkgmSubscription.class);
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- if (responseEntity.hasBody()) {
- return Optional.of(responseEntity.getBody());
- }
- logger.error("Received response without body on postSubscription");
- }
- logger.error("Unexpected Status Code Received on postSubscription: {}", responseEntity.getStatusCode());
- return Optional.empty();
- } catch (final InvalidRestRequestException invalidRestRequestException) {
- logger.error("Caught InvalidRestRequestException", invalidRestRequestException);
- throw new EtsiCatalogManagerBadRequestException(
- "Bad Request Received on postSubscription call to ETSI Catalog Manager.");
- } catch (final RestProcessingException restProcessingException) {
- logger.error("Caught RestProcessingException with Status Code: {}", restProcessingException.getStatusCode(),
- restProcessingException);
- throw new EtsiCatalogManagerRequestFailureException(
- "Internal Server Error Occurred. On postSubscription with StatusCode: "
- + restProcessingException.getStatusCode());
- }
- }
-
- @Override
- public boolean deleteSubscription(final String subscriptionId) {
- try {
- final ResponseEntity<Void> responseEntity = httpServiceProvider
- .deleteHttpRequest(etsiCatalogUrlProvider.getSubscriptionUrl() + "/" + subscriptionId, Void.class);
-
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- logger.info("Subscription with ID: {} has been successfully deleted from the ETSI Catalog Manager",
- subscriptionId);
- return true;
- }
- logger.error("Unexpected Status Code Received on deleteSubscription: {}", responseEntity.getStatusCode());
- return false;
- } catch (final HttpResouceNotFoundException resouceNotFoundException) {
- final String message = "Unable to find subscription in ETSI Catalog Manager using id: " + subscriptionId;
- logger.error(message);
- throw new SubscriptionNotFoundException(message);
- } catch (final InvalidRestRequestException invalidRestRequestException) {
- logger.error("Caught InvalidRestRequestException on deleteSubscription call to ETSI Catalog Manager.",
- invalidRestRequestException);
- throw new EtsiCatalogManagerBadRequestException(
- "Bad Request Received on deleteSubscription call to ETSI Catalog Manager.");
- }
- }
-
- @Override
- public Optional<NsdmSubscription> getSubscription(final String subscriptionId) {
- try {
- final ResponseEntity<NsdmSubscription> responseEntity = httpServiceProvider.getHttpResponse(
- etsiCatalogUrlProvider.getSubscriptionUrl() + "/" + subscriptionId, NsdmSubscription.class);
-
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- logger.debug("Found subscription with ID: {} in ETSI Catalog Manager", subscriptionId);
- return Optional.ofNullable(responseEntity.getBody());
- }
- logger.error("Unexpected Status Code Received on getting subscription from ETSI Catalog Manager: {}",
- responseEntity.getStatusCode());
- } catch (final HttpResouceNotFoundException resouceNotFoundException) {
- logger.error("Unable to find subscription in ETSI Catalog Manager using id: {}", subscriptionId);
- return Optional.empty();
- } catch (final RestProcessingException | InvalidRestRequestException exception) {
- logger.error("Unable to query ETSI Catalog Manager for subscription using id: {}", subscriptionId,
- exception);
- }
- throw new EtsiCatalogManagerRequestFailureException("Internal Server Error Occurred.");
- }
-
- private Optional<byte[]> requestVnfElement(final String vnfPkgId, final String vnfRequestUrl,
- final String vnfRequestName) {
- try {
- final ResponseEntity<byte[]> response = httpServiceProvider.getHttpResponse(vnfRequestUrl, byte[].class);
- logger.info("{} Request to ETSI Catalog Manager Status Code: {}", vnfRequestName,
- response.getStatusCodeValue());
- if (response.getStatusCode() == HttpStatus.OK) {
- return Optional.ofNullable(response.getBody());
- }
- } catch (final HttpResouceNotFoundException httpResouceNotFoundException) {
- logger.error("Caught HttpResouceNotFoundException", httpResouceNotFoundException);
- throw new VnfPkgNotFoundException("No Vnf Package found with vnfPkgId: " + vnfPkgId);
- } catch (final RestProcessingException restProcessingException) {
- logger.error("Caught RestProcessingException with Status Code: {}", restProcessingException.getStatusCode(),
- restProcessingException);
- if (restProcessingException.getStatusCode() == HttpStatus.CONFLICT.value()) {
- throw new VnfPkgConflictException("A conflict occurred with the state of the resource,\n"
- + "due to the attribute: onboardingState not being set to ONBOARDED.");
- }
- }
- throw new EtsiCatalogManagerRequestFailureException("Internal Server Error Occurred.");
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogSubscriptionServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogSubscriptionServiceProvider.java
deleted file mode 100644
index d561f8734b..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogSubscriptionServiceProvider.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscription;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface EtsiCatalogSubscriptionServiceProvider {
-
- /**
- * POST the SubscriptionRequest Object.
- *
- * @return The ETSI Catalog Manager's PkgmSubscription object.
- */
- Optional<PkgmSubscription> postSubscription(
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest);
-
- /**
- * Get the Subscription from ETSI Catalog.
- *
- * @param subscriptionId Subscription ID
- * @return The Subscription {@link NsdmSubscription} from ETSI Catalog
- */
- Optional<NsdmSubscription> getSubscription(final String subscriptionId);
-
- /**
- * DELETE the SubscriptionRequest Object.
- *
- * @return A Boolean representing if the delete was successful or not.
- */
- boolean deleteSubscription(final String subscriptionId);
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogUrlProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogUrlProvider.java
deleted file mode 100644
index 1725bf9fba..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogUrlProvider.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-/**
- * Provides the URLs for the REST Requests to the ETSI Catalog Manager.
- *
- * @author gareth.roper@est.tech
- */
-@Service
-public class EtsiCatalogUrlProvider {
-
- private static final Logger logger = getLogger(EtsiCatalogUrlProvider.class);
-
- @Value("${etsi-catalog-manager.vnfpkgm.endpoint}")
- private String etsiCatalogManagerEndpoint;
-
- public EtsiCatalogUrlProvider() {}
-
- /**
- * Get the URL for retrieving the Package Content from the ETSI Catalog.".
- *
- * @param vnfPkgId The ID of the VNF Package
- * @return the URL for the GET operation
- */
- public String getVnfPackageContentUrl(final String vnfPkgId) {
- final String url = etsiCatalogManagerEndpoint + "/vnf_packages/" + vnfPkgId + "/package_content";
- logger.info("getEtsiCatalogVnfPackageContentUrl: {}", url);
- return url;
- }
-
- /**
- * Get the URL for retrieving VNF packages information from ETSI Catalog.".
- *
- * @return the URL for the GET operation
- */
- public String getVnfPackagesUrl() {
- final String url = etsiCatalogManagerEndpoint + "/vnf_packages";
- logger.info("getEtsiCatalogVnfPackagesEndpoint: {}", url);
- return url;
- }
-
- /**
- * Get the URL for retrieving specific VNF package information from the ETSI Catalog.".
- *
- * @param vnfPkgId The ID of the VNF Package
- * @return the URL for the GET operation
- */
- public String getVnfPackageUrl(final String vnfPkgId) {
- final String url = etsiCatalogManagerEndpoint + "/vnf_packages/" + vnfPkgId;
- logger.info("getEtsiCatalogVnfPackageEndpoint: {}", url);
- return url;
- }
-
- /**
- * Get the URL for retrieving VNF Package Artifacts
- *
- * @param vnfPkgId The ID of the VNF Package
- * @param artifactPath The path to the Artifact
- * @return the URL for the GET operation
- */
- public String getVnfPackageArtifactUrl(final String vnfPkgId, final String artifactPath) {
- final String url = etsiCatalogManagerEndpoint + "/vnf_packages/" + vnfPkgId + "/artifacts/" + artifactPath;
- logger.info("getVnfPackageArtifactUrl: {}", url);
- return url;
- }
-
- /**
- * Get the URL for retrieving VNF packages vnfd from ETSI Catalog.
- *
- * @param vnfPkgId The ID of the VNF Package
- * @return the URL for the GET operation
- */
- public String getVnfPackageVnfdUrl(final String vnfPkgId) {
- final String url = etsiCatalogManagerEndpoint + "/vnf_packages/" + vnfPkgId + "/vnfd";
- logger.info("getEtsiCatalogVnfPackageVnfd: {}", url);
- return url;
- }
-
- /**
- * Get the URL for posting/retrieving a Subscription
- *
- * @return the URL for the operation
- */
- public String getSubscriptionUrl() {
- final String url = etsiCatalogManagerEndpoint + "/subscriptions";
- logger.info("getSubscriptionNotificationUrl: {}", url);
- return url;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java
deleted file mode 100644
index 22bbef9c01..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm;
-
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import java.time.LocalDateTime;
-import java.time.OffsetDateTime;
-import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration;
-import org.onap.so.adapters.etsisol003adapter.pkgm.JSON;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.EtsiSubscriptionNotificationController;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class VnfmHttpServiceProviderConfiguration extends AbstractServiceProviderConfiguration {
- private final JSON.OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new JSON.OffsetDateTimeTypeAdapter();
-
- public static final String VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN = "vnfmAdapterHttpServiceProvider";
-
- @Bean
- @Qualifier(VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN)
- public HttpRestServiceProvider vnfmAdapterHttpRestServiceProvider(
- @Autowired @Qualifier(CONFIGURABLE_REST_TEMPLATE) RestTemplate restTemplate) {
- setGsonMessageConverter(restTemplate);
- return new HttpRestServiceProviderImpl(restTemplate, new BasicHttpHeadersProvider().getHttpHeaders());
- }
-
- @Override
- protected Gson getGson() {
- return JSON.createGson().registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
- .registerTypeAdapter(LocalDateTime.class,
- new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter())
- .create();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java
deleted file mode 100644
index 2b4b486fa8..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.AbstractMap;
-import java.util.Map.Entry;
-import javax.ws.rs.core.MediaType;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.InternalServerErrorException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.NotificationTypeNotSupportedException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt.NotificationManager;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.google.gson.TypeAdapter;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonWriter;
-
-/**
- * This controller handles the ETSI Subscription Notification Endpoints.
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@Controller
-@RequestMapping(value = ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL)
-public class EtsiSubscriptionNotificationController {
-
- private static final Logger logger = getLogger(EtsiSubscriptionNotificationController.class);
- private final NotificationManager notificationManager;
- private final Gson gson;
-
- @Autowired
- public EtsiSubscriptionNotificationController(final NotificationManager notificationManager) {
- this.notificationManager = notificationManager;
- this.gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeTypeAdapter()).create();
- }
-
- @GetMapping(value = "/notification")
- public ResponseEntity<Void> testSubscriptionNotificationEndPoint() {
- logger.debug("Testing Notification Endpoint");
- return ResponseEntity.noContent().build();
- }
-
- /**
- * POST notification on to subscriber.
- *
- * @param notification The notification to send.
- * @return Response Code: 204 No Content if Successful, ProblemDetails Object if not.
- */
- @PostMapping(value = "/notification", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON)
- public ResponseEntity<?> postSubscriptionNotification(@RequestBody final Object notification) {
- logger.info("Posting subscription notification class: {} \n{}", notification.getClass(), notification);
- final String notificationString = gson.toJson(notification);
-
- final Entry<String, Object> notificationObject = getNotificationObject(notificationString);
- if (notificationManager.processSubscriptionNotification(notificationObject.getValue(),
- notificationObject.getKey())) {
- logger.info("Notification Delivered Successfully");
- return ResponseEntity.noContent().build();
- }
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed.";
- logger.error(errorMessage);
- throw new InternalServerErrorException(errorMessage);
- }
-
- private Entry<String, Object> getNotificationObject(final String notification) {
- logger.info("getNotificationObject() notification: {}", notification);
- final String notificationType = getNotificationType(notification);
- if (PkgOnboardingNotification.NotificationTypeEnum.VNFPACKAGEONBOARDINGNOTIFICATION.getValue()
- .equals(notificationType)) {
- final PkgOnboardingNotification pkgOnboardingNotification =
- gson.fromJson(notification, PkgOnboardingNotification.class);
- logger.info("Onboarding notification received:\n{}", pkgOnboardingNotification);
- return new AbstractMap.SimpleEntry<>(pkgOnboardingNotification.getSubscriptionId(),
- pkgOnboardingNotification);
- }
- if (PkgChangeNotification.NotificationTypeEnum.VNFPACKAGECHANGENOTIFICATION.getValue()
- .equals(notificationType)) {
- final PkgChangeNotification pkgChangeNotification =
- gson.fromJson(notification, PkgChangeNotification.class);
- logger.info("Change notification received:\n{}", pkgChangeNotification);
- return new AbstractMap.SimpleEntry<>(pkgChangeNotification.getSubscriptionId(), pkgChangeNotification);
-
- }
-
- final String errorMessage = "An error occurred. Notification type not supported for: " + notificationType;
- logger.error(errorMessage);
- throw new NotificationTypeNotSupportedException(errorMessage);
-
- }
-
- private String getNotificationType(final String notification) {
- try {
- logger.info("getNotificationType() notification: {}", notification);
- final JsonParser parser = new JsonParser();
- final JsonObject element = (JsonObject) parser.parse(notification);
- return element.get("notificationType").getAsString();
- } catch (final Exception e) {
- logger.error("An error occurred processing notificiation: {}", e.getMessage());
- }
- throw new NotificationTypeNotSupportedException(
- "Unable to parse notification type in object \n" + notification);
- }
-
- public static class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
-
- private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
- @Override
- public void write(final JsonWriter out, final LocalDateTime localDateTime) throws IOException {
- if (localDateTime == null) {
- out.nullValue();
- } else {
- out.value(FORMATTER.format(localDateTime));
- }
- }
-
- @Override
- public LocalDateTime read(final JsonReader in) throws IOException {
- switch (in.peek()) {
- case NULL:
- in.nextNull();
- return null;
- default:
- final String dateTime = in.nextString();
- return LocalDateTime.parse(dateTime, FORMATTER);
- }
- }
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementController.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementController.java
deleted file mode 100644
index 6c1e5e5506..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementController.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.PACKAGE_MANAGEMENT_BASE_URL;
-import static org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants.APPLICATION_ZIP;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.Optional;
-import javax.ws.rs.core.MediaType;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2001;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * Controller for handling the VNF Package Management. For further information please read:
- * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.05.01_60/gs_nfv-sol003v020501p.pdf Use the section number
- * above each endpoint to find the corresponding section in the above document.
- *
- * @author gareth.roper@est.tech
- */
-@Controller
-@RequestMapping(value = PACKAGE_MANAGEMENT_BASE_URL, consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-public class Sol003PackageManagementController {
-
- private final EtsiCatalogServiceProvider etsiCatalogServiceProvider;
- private static final String LOG_REQUEST_RECEIVED = "VNF PackageManagement Controller: {} {} {} {}";
- private static final Logger logger = getLogger(Sol003PackageManagementController.class);
-
- @Autowired
- Sol003PackageManagementController(final EtsiCatalogServiceProvider etsiCatalogServiceProvider) {
- this.etsiCatalogServiceProvider = etsiCatalogServiceProvider;
- }
-
- /**
- * GET VNF packages information. Will return zero or more VNF package representations that match the attribute
- * filter. These representations will be in a list. Section Number: 10.4.2
- *
- * @return An Array of all VNF packages. Object: InlineResponse2001[] Response Code: 200 OK
- */
- @GetMapping(value = "/vnf_packages", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<?> getVnfPackages() {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackages.");
- final Optional<InlineResponse2001[]> response = etsiCatalogServiceProvider.getVnfPackages();
- if (response.isPresent()) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackages Response: ", HttpStatus.OK);
- return ResponseEntity.ok().body(response.get());
- }
- final String errorMessage = "An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"vnf_packages\" \n"
- + "endpoint.";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * GET VNF package information. Will return a specific VNF package representation that match the attribute filter.
- * Section Number: 10.4.3
- *
- * @param vnfPkgId The ID of the VNF Package that you want to query.
- * @return A VNF package based on vnfPkgId. Object: VnfPkgInfo Response Code: 200 OK
- */
- @GetMapping(value = "/vnf_packages/{vnfPkgId}", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<?> getVnfPackage(@PathVariable("vnfPkgId") final String vnfPkgId) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackage: ", vnfPkgId);
- final Optional<InlineResponse2001> response = etsiCatalogServiceProvider.getVnfPackage(vnfPkgId);
- if (response.isPresent()) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackage Response: ", HttpStatus.OK);
- return ResponseEntity.ok().body(response.get());
- }
- final String errorMessage = "An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"vnf_packages\" by vnfPkgId: \""
- + vnfPkgId + "\" \n" + "endpoint.";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * GET VNFD, from VNF package. Will return a copy of the file representing the VNFD or a ZIP file that contains the
- * file/multiple files representing the VNFD specified. Section Number: 10.4.4
- *
- * @param vnfPkgId The ID of the VNF Package that you want to retrieve the VNFD from.
- * @return The VNFD of a VNF Package as a single file or within a ZIP file. Object: byte[] Response Code: 200 OK
- */
- @GetMapping(value = "/vnf_packages/{vnfPkgId}/vnfd",
- produces = {MediaType.TEXT_PLAIN, APPLICATION_ZIP, MediaType.APPLICATION_JSON})
- public ResponseEntity<?> getVnfPackageVnfd(@PathVariable("vnfPkgId") final String vnfPkgId) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageVnfd Endpoint Invoked with VNF Package ID: ", vnfPkgId);
- final Optional<byte[]> response = etsiCatalogServiceProvider.getVnfPackageVnfd(vnfPkgId);
- if (response.isPresent()) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageVnfd Response: ", HttpStatus.OK);
- return new ResponseEntity<>(response.get(), HttpStatus.OK);
- }
- final String errorMessage = "An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"vnfd\" \n"
- + "endpoint.";
-
- logger.error(errorMessage);
- return new ResponseEntity<>(new ProblemDetails().detail(errorMessage), HttpStatus.INTERNAL_SERVER_ERROR);
- }
-
- /**
- * GET Package Content, from VNF Package. Will return a copy of the VNF package file that you specified. Section
- * Number: 10.4.5
- *
- * @param vnfPkgId The ID of the VNF Package that you want to retrieve the "package_content" from.
- * @return The Package Content of a VNF Package. Object: byte[] Response Code: 200 OK
- */
- @GetMapping(value = "/vnf_packages/{vnfPkgId}/package_content",
- produces = {MediaType.APPLICATION_JSON, APPLICATION_ZIP, MediaType.APPLICATION_OCTET_STREAM})
- public ResponseEntity<?> getVnfPackageContent(@PathVariable("vnfPkgId") final String vnfPkgId) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageContent Endpoint Invoked with VNF Package ID: ", vnfPkgId);
- final Optional<byte[]> response = etsiCatalogServiceProvider.getVnfPackageContent(vnfPkgId);
- if (response.isPresent()) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageContent Response: ", HttpStatus.OK);
- return ResponseEntity.ok().body(response.get());
- }
- final String errorMessage = "An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"package_content\" \n"
- + "endpoint.";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * GET Artifact, from VNF Package Will return a the content of the artifact that you specified. Section Number:
- * 10.4.6
- *
- * @param vnfPkgId The ID of the VNF Package that you want to retrieve an artifact from.
- * @param artifactPath The path of the artifact that you want to retrieve.
- * @return An Artifact from a VNF Package. Object: byte[] Response Code: 200 OK
- */
- @GetMapping(value = "/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}",
- produces = {MediaType.APPLICATION_OCTET_STREAM, MediaType.APPLICATION_JSON})
- public ResponseEntity<?> getVnfPackageArtifact(@PathVariable("vnfPkgId") final String vnfPkgId,
- @PathVariable("artifactPath") final String artifactPath) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageArtifact: vnfPkgId= ", vnfPkgId, " artifactPath=",
- artifactPath);
- final Optional<byte[]> response = etsiCatalogServiceProvider.getVnfPackageArtifact(vnfPkgId, artifactPath);
- if (response.isPresent()) {
- logger.info(LOG_REQUEST_RECEIVED, "getVnfPackageArtifact Response: ", HttpStatus.OK);
- return ResponseEntity.ok().body(response.get());
- }
- final String errorMessage = "An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the\n GET \"vnf_packages\" by vnfPkgId: \""
- + vnfPkgId + "\" for artifactPath: \"" + artifactPath + "\"\n" + "endpoint.";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionController.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionController.java
deleted file mode 100644
index 7314f6aa2e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionController.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.PACKAGE_MANAGEMENT_BASE_URL;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import java.security.GeneralSecurityException;
-import java.util.List;
-import java.util.Optional;
-import javax.ws.rs.core.MediaType;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt.SubscriptionManager;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * Controller for handling the Subscription Management. The client can use this resource to subscribe to notifications
- * related to the VNF package management, and to query its subscriptions. For further information please read:
- * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.05.01_60/gs_nfv-sol003v020501p.pdf Use the section number
- * above each endpoint to find the corresponding section in the above document.
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Controller
-@RequestMapping(value = PACKAGE_MANAGEMENT_BASE_URL, produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-public class Sol003PackageManagementSubscriptionController {
-
- private static final String LOG_REQUEST_RECEIVED = "Subscription Management Controller: {} {}";
- private static final Logger logger = getLogger(Sol003PackageManagementSubscriptionController.class);
- private final SubscriptionManager subscriptionManager;
-
- @Autowired
- public Sol003PackageManagementSubscriptionController(final SubscriptionManager subscriptionManager) {
- this.subscriptionManager = subscriptionManager;
- }
-
- /**
- * POST Subscribe request. Will send request and respond with the subscription that you subscribed to, if
- * successful. Section Number: 10.4.7
- *
- * @param pkgmSubscriptionRequest This includes the details of the subscription to be created.
- * @return The subscription requested, if successful. Object: InlineRespone2002 Response Code: 201 Created Response
- * Code: 303 Duplicate Subscription
- * @throws GeneralSecurityException
- */
- @PostMapping(value = "/subscriptions")
- public ResponseEntity<?> postSubscriptionRequest(@RequestBody final PkgmSubscriptionRequest pkgmSubscriptionRequest)
- throws GeneralSecurityException {
- logger.info(LOG_REQUEST_RECEIVED, " postSubscriptionRequest Endpoint Called", pkgmSubscriptionRequest);
-
- // Check if subscription exists already.
- final Optional<String> exists = subscriptionManager.getSubscriptionId(pkgmSubscriptionRequest);
-
- if (exists.isPresent()) {
- final URI subscriptionUri = subscriptionManager.getSubscriptionUri(exists.get());
- final HttpHeaders headers = createLocationHeader(subscriptionUri);
- logger.info("PkgmSubscriptionRequest already exists with uri {} ", subscriptionUri);
- return new ResponseEntity<>(headers, HttpStatus.SEE_OTHER);
- }
-
- logger.debug("No duplicate Subscription exists, continuing with POST.");
- final Optional<InlineResponse201> optionalInlineResponse =
- subscriptionManager.createSubscription(pkgmSubscriptionRequest);
-
- if (optionalInlineResponse.isPresent()) {
- InlineResponse201 inlineResponse = optionalInlineResponse.get();
- final URI subscriptionUri = subscriptionManager.getSubscriptionUri(inlineResponse.getId());
- final HttpHeaders headers = createLocationHeader(subscriptionUri);
- logger.debug("Sending response with uri {} ", subscriptionUri);
- return new ResponseEntity<>(inlineResponse, headers, HttpStatus.CREATED);
- }
- final String errorMessage = "A null response was received during the postSubscriptionRequest call.";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * GET all subscriptions. Will return a list of all subscriptions currently active. Section Number: 10.4.7
- *
- * @return All of the current active subscriptions. Object: List<InlineResponse2002> Response Code: 200 OK
- */
- @GetMapping(value = "/subscriptions")
- public ResponseEntity<List<InlineResponse201>> getSubscriptions() {
- logger.info(LOG_REQUEST_RECEIVED, " getSubscriptions.");
- List<InlineResponse201> subscriptionsList = subscriptionManager.getSubscriptions();
- return new ResponseEntity<>(subscriptionsList, HttpStatus.OK);
- }
-
- /**
- * GET a specific subscription, by subscriptionId. Section Number: 10.4.8
- *
- * @param subscriptionId The ID of the subscription that you wish to retrieve.
- * @return A subscription based on subscriptionId. Object: InlineResponse2002 Response Code: 200 OK
- */
- @GetMapping(value = "/subscriptions/{subscriptionId}")
- public ResponseEntity<?> getSubscription(@PathVariable("subscriptionId") final String subscriptionId) {
- logger.info(LOG_REQUEST_RECEIVED, " Getting Subscription: ", subscriptionId);
- final Optional<InlineResponse201> optional = subscriptionManager.getSubscription(subscriptionId);
- if (optional.isPresent()) {
- logger.debug("Return subscription with id {} and body {}", subscriptionId, optional);
- return new ResponseEntity<>(optional.get(), HttpStatus.OK);
- }
- final String errorMessage =
- "The requested subscription: " + subscriptionId + " was not found on call getSubscription";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * DELETE a specific subscription, by subscriptionId. Section Number: 10.4.8.3.5
- *
- * @param subscriptionId The ID of the subscription that you wish to delete.
- * @return Empty response if successful. Object: Void Response Code: 204 No Content
- */
- @DeleteMapping(value = "/subscriptions/{subscriptionId}")
- public ResponseEntity<?> deleteSubscription(@PathVariable("subscriptionId") final String subscriptionId) {
- if (subscriptionManager.deleteSubscription(subscriptionId)) {
- logger.debug("Successfully deleted subscription with id {}", subscriptionId);
- return ResponseEntity.noContent().build();
- }
- final String errorMessage =
- "The requested subscription: " + subscriptionId + " was not found on call deleteSubscription";
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ProblemDetails().detail(errorMessage));
- }
-
- /**
- * Method to set the Location in the header with the URI parameter
- *
- * @param subscriptionUri
- * @return header with callbackUri in Location
- */
- private HttpHeaders createLocationHeader(final URI subscriptionUri) {
- final HttpHeaders headers = new HttpHeaders();
- headers.setLocation(subscriptionUri);
- return headers;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/AuthenticationTypeNotSupportedException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/AuthenticationTypeNotSupportedException.java
deleted file mode 100644
index 6e1330140f..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/AuthenticationTypeNotSupportedException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an unsupported authentication type
- *
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class AuthenticationTypeNotSupportedException extends RuntimeException {
-
- private static final long serialVersionUID = 2939423208362066902L;
-
- public AuthenticationTypeNotSupportedException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/ConversionFailedException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/ConversionFailedException.java
deleted file mode 100644
index 9e9cb8e352..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/ConversionFailedException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for Conversion Failures
- *
- * @author Gareth Roper (gareth.roper@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class ConversionFailedException extends RuntimeException {
-
- private static final long serialVersionUID = 45898561453196895L;
-
- public ConversionFailedException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerBadRequestException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerBadRequestException.java
deleted file mode 100644
index 7d9d5fc17a..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerBadRequestException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an ETSI Catalog Manager Bad Request Exception.
- *
- * @author Gareth Roper (gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.BAD_REQUEST)
-public class EtsiCatalogManagerBadRequestException extends RuntimeException {
-
- private static final long serialVersionUID = 6571317418914258768L;
-
- public EtsiCatalogManagerBadRequestException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerRequestFailureException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerRequestFailureException.java
deleted file mode 100644
index 110826a6d3..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiCatalogManagerRequestFailureException.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an ETSI Catalog Manager Request Failure
- *
- * @author gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class EtsiCatalogManagerRequestFailureException extends RuntimeException {
-
- private static final long serialVersionUID = 66862444537194516L;
-
- public EtsiCatalogManagerRequestFailureException(final String message) {
- super(message);
- }
-
- public EtsiCatalogManagerRequestFailureException(final String message, final Throwable cause) {
- super(message, cause);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiSubscriptionNotificationControllerExceptionHandler.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiSubscriptionNotificationControllerExceptionHandler.java
deleted file mode 100644
index 645ef96326..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/EtsiSubscriptionNotificationControllerExceptionHandler.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.EtsiSubscriptionNotificationController;
-import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
-import org.onap.so.rest.exceptions.InvalidRestRequestException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.slf4j.Logger;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-/**
- * Exception Handler for the Etsi Subscription Notification Controller {@link EtsiSubscriptionNotificationController
- * EtsiSubscriptionNotificationController}
- *
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@ControllerAdvice(assignableTypes = EtsiSubscriptionNotificationController.class)
-public class EtsiSubscriptionNotificationControllerExceptionHandler {
-
- private static final Logger logger = getLogger(EtsiSubscriptionNotificationControllerExceptionHandler.class);
-
- @ExceptionHandler(InvalidRestRequestException.class)
- public ResponseEntity<ProblemDetails> handleInvalidRestRequestException(
- final InvalidRestRequestException invalidRestRequestException) {
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.BAD_REQUEST + ".\n" + invalidRestRequestException.getMessage();
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- @ExceptionHandler(HttpResouceNotFoundException.class)
- public ResponseEntity<ProblemDetails> handleHttpResourceNotFoundException(
- final HttpResouceNotFoundException httpResourceNotFoundException) {
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.NOT_FOUND + ".\n" + httpResourceNotFoundException.getMessage();
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- @ExceptionHandler(RestProcessingException.class)
- public ResponseEntity<ProblemDetails> handleRestProcessingException(
- final RestProcessingException restProcessingException) {
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + restProcessingException.getStatusCode() + ".\n" + restProcessingException.getMessage();
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ProblemDetails().detail(errorMessage));
- }
-
- @ExceptionHandler(InternalServerErrorException.class)
- public ResponseEntity<ProblemDetails> handleInternalServerErrorException(
- final InternalServerErrorException internalServerErrorException) {
- logger.error(internalServerErrorException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(new ProblemDetails().detail(internalServerErrorException.getMessage()));
- }
-
- @ExceptionHandler(AuthenticationTypeNotSupportedException.class)
- public ResponseEntity<ProblemDetails> handleAuthenticationTypeNotSupportedException(
- final AuthenticationTypeNotSupportedException authenticationTypeNotSupportedException) {
- logger.error(authenticationTypeNotSupportedException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(new ProblemDetails().detail(authenticationTypeNotSupportedException.getMessage()));
- }
-
- @ExceptionHandler(ConversionFailedException.class)
- public ResponseEntity<ProblemDetails> handleConversionFailedException(
- final ConversionFailedException conversionFailedException) {
- logger.error(conversionFailedException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(new ProblemDetails().detail(conversionFailedException.getMessage()));
- }
-
- @ExceptionHandler(NotificationTypeNotSupportedException.class)
- public ResponseEntity<ProblemDetails> handleNotificationTypeNotSupportedException(
- final NotificationTypeNotSupportedException notificationTypeNotSupportedException) {
- logger.error(notificationTypeNotSupportedException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(new ProblemDetails().detail(notificationTypeNotSupportedException.getMessage()));
- }
-
- @ExceptionHandler(SubscriptionNotFoundException.class)
- public ResponseEntity<ProblemDetails> handleSubscriptionNotFoundException(
- final SubscriptionNotFoundException subscriptionNotFoundException) {
- logger.error(subscriptionNotFoundException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(new ProblemDetails().detail(subscriptionNotFoundException.getMessage()));
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/InternalServerErrorException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/InternalServerErrorException.java
deleted file mode 100644
index 9dd7f1b7b2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/InternalServerErrorException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an ETSI Catalog Manager Request Failure
- *
- * @author gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class InternalServerErrorException extends RuntimeException {
-
- private static final long serialVersionUID = 66864561537194516L;
-
- public InternalServerErrorException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/NotificationTypeNotSupportedException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/NotificationTypeNotSupportedException.java
deleted file mode 100644
index 7716037342..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/NotificationTypeNotSupportedException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an unsupported notification type
- *
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class NotificationTypeNotSupportedException extends RuntimeException {
-
- private static final long serialVersionUID = 2939423208362066902L;
-
- public NotificationTypeNotSupportedException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/Sol003PackageManagementControllerExceptionHandler.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/Sol003PackageManagementControllerExceptionHandler.java
deleted file mode 100644
index 9f97b4ae02..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/Sol003PackageManagementControllerExceptionHandler.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.Sol003PackageManagementController;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-/**
- * Exception Handler for the Package Management Controller {@link Sol003PackageManagementController Sol003Controller}
- *
- * @author gareth.roper@est.tech
- */
-@ControllerAdvice(assignableTypes = Sol003PackageManagementController.class)
-
-public class Sol003PackageManagementControllerExceptionHandler {
-
- @ExceptionHandler(EtsiCatalogManagerRequestFailureException.class)
- public ResponseEntity<ProblemDetails> handleEtsiCatalogManagerRequestFailureException(
- final EtsiCatalogManagerRequestFailureException etsiCatalogManagerRequestFailureException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(etsiCatalogManagerRequestFailureException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(problemDetails);
- }
-
- @ExceptionHandler(EtsiCatalogManagerBadRequestException.class)
- public ResponseEntity<ProblemDetails> handleEtsiCatalogManagerBadRequestFailureException(
- final EtsiCatalogManagerBadRequestException etsiCatalogManagerBadRequestException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(etsiCatalogManagerBadRequestException.getMessage());
- return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(problemDetails);
- }
-
- @ExceptionHandler(SubscriptionNotFoundException.class)
- public ResponseEntity<ProblemDetails> handleSubscriptionNotFoundException(
- final SubscriptionNotFoundException subscriptionNotFoundException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(subscriptionNotFoundException.getMessage());
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(problemDetails);
- }
-
- @ExceptionHandler(ConversionFailedException.class)
- public ResponseEntity<ProblemDetails> handleConversionFailedException(
- final ConversionFailedException conversionFailedException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(conversionFailedException.getMessage());
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(problemDetails);
- }
-
- @ExceptionHandler(VnfPkgConflictException.class)
- public ResponseEntity<ProblemDetails> handleVnfPkgConflictException(
- final VnfPkgConflictException vnfPkgConflictException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(vnfPkgConflictException.getMessage());
- return ResponseEntity.status(HttpStatus.CONFLICT).body(problemDetails);
- }
-
- @ExceptionHandler(VnfPkgNotFoundException.class)
- public ResponseEntity<ProblemDetails> handleVnfPkgNotFoundException(
- final VnfPkgNotFoundException vnfPkgNotFoundException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(vnfPkgNotFoundException.getMessage());
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(problemDetails);
- }
-
- @ExceptionHandler(VnfPkgBadRequestException.class)
- public ResponseEntity<ProblemDetails> handleVnfPkgBadRequestException(
- final VnfPkgBadRequestException vnfPkgBadRequestException) {
- final ProblemDetails problemDetails = new ProblemDetails();
- problemDetails.setDetail(vnfPkgBadRequestException.getMessage());
- return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(problemDetails);
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/SubscriptionNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/SubscriptionNotFoundException.java
deleted file mode 100644
index af409e7399..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/SubscriptionNotFoundException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for an ETSI Catalog Manager Request Failure
- *
- * @author gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.NOT_FOUND)
-public class SubscriptionNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 85268561453194516L;
-
- public SubscriptionNotFoundException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgBadRequestException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgBadRequestException.java
deleted file mode 100644
index 5c318da89f..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgBadRequestException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for a Vnfpkg Bad Request failure, due to state of resource.
- *
- * @author andrew.a.lamb@est.tech
- */
-@ResponseStatus(code = HttpStatus.BAD_REQUEST)
-public class VnfPkgBadRequestException extends RuntimeException {
-
- private static final long serialVersionUID = 3301317418914258411L;
-
- public VnfPkgBadRequestException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgConflictException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgConflictException.java
deleted file mode 100644
index 7cb7a0c860..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgConflictException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for a VnfPkg Conflict failures, due to state of resource.
- *
- * @author gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.CONFLICT)
-public class VnfPkgConflictException extends RuntimeException {
-
- private static final long serialVersionUID = 26862444537198441L;
-
- public VnfPkgConflictException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgNotFoundException.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgNotFoundException.java
deleted file mode 100644
index 5ed4847173..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/exceptions/VnfPkgNotFoundException.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * Exception for VnfPkg Not Found Failures
- *
- * @author gareth.roper@est.tech
- */
-@ResponseStatus(code = HttpStatus.NOT_FOUND)
-public class VnfPkgNotFoundException extends RuntimeException {
-
- private static final long serialVersionUID = 26862444537198441L;
-
- public VnfPkgNotFoundException(final String message) {
- super(message);
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/AbstractNotificationServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/AbstractNotificationServiceProvider.java
deleted file mode 100644
index b6ba1ede95..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/AbstractNotificationServiceProvider.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.VnfmHttpServiceProviderConfiguration.VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN;
-import java.nio.charset.StandardCharsets;
-import org.apache.commons.codec.binary.Base64;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-
-/**
- * A base class that can be extended by classes for providing notification services. Provides common methods that will
- * be useful to those classes.
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-public abstract class AbstractNotificationServiceProvider {
-
- @Autowired
- @Qualifier(VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN)
- private HttpRestServiceProvider httpRestServiceProvider;
-
- protected HttpRestServiceProvider getHttpRestServiceProvider() {
- return httpRestServiceProvider;
- }
-
- protected BasicHttpHeadersProvider getBasicHttpHeadersProviderWithBasicAuth(final String username,
- final String password) {
- final byte[] encodedAuth = getBasicAuth(username, password);
- final String authHeader = "Basic " + new String(encodedAuth);
- return new BasicHttpHeadersProvider(authHeader);
- }
-
- protected byte[] getBasicAuth(final String username, final String password) {
- final String auth = username + ":" + password;
- return Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1));
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/BasicAuthNotificationServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/BasicAuthNotificationServiceProvider.java
deleted file mode 100644
index ffe8529c93..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/BasicAuthNotificationServiceProvider.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.configuration.rest.HttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-/**
- * Implementation of a NotificationServiceProvider which supports Basic Authentication
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@Service
-public class BasicAuthNotificationServiceProvider extends AbstractNotificationServiceProvider
- implements NotificationServiceProvider {
-
- private static final Logger logger = getLogger(BasicAuthNotificationServiceProvider.class);
-
- @Override
- public boolean send(final Object notification, final SubscriptionsAuthentication subscriptionsAuthentication,
- final String callbackUri) {
- logger.info("Sending notification to uri: {}", callbackUri);
- final HttpHeadersProvider httpHeadersProvider =
- getBasicHttpHeadersProviderWithBasicAuth(subscriptionsAuthentication.getParamsBasic().getUserName(),
- subscriptionsAuthentication.getParamsBasic().getPassword());
- final HttpRestServiceProvider httpRestServiceProvider = getHttpRestServiceProvider();
-
- final ResponseEntity<Void> responseEntity = httpRestServiceProvider.postHttpRequest(notification, callbackUri,
- httpHeadersProvider.getHttpHeaders(), Void.class);
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- logger.info("Notification sent successfully.");
- return true;
- }
-
- logger.error("Failed to send notification.");
- return false;
- }
-
- @Override
- public AuthTypeEnum getAuthType() {
- return AuthTypeEnum.BASIC;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationManager.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationManager.java
deleted file mode 100644
index 82b1a7d4c3..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationManager.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.List;
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.AuthenticationTypeNotSupportedException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.ConversionFailedException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.NotificationTypeNotSupportedException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.SubscriptionNotFoundException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.stereotype.Service;
-
-/**
- * Manages package management subscription notifications to the VNFMs
- *
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Service
-public class NotificationManager {
-
- private static final Logger logger = getLogger(NotificationManager.class);
- private final ConversionService conversionService;
- private final SubscriptionManager subscriptionManager;
- private final NotificationServiceProviderFactory notificationServiceProviderFactory;
-
- @Autowired
- public NotificationManager(final SubscriptionManager subscriptionManager, final ConversionService conversionService,
- final NotificationServiceProviderFactory notificationServiceProviderFactory) {
- this.subscriptionManager = subscriptionManager;
- this.conversionService = conversionService;
- this.notificationServiceProviderFactory = notificationServiceProviderFactory;
- }
-
- /**
- * Process a subscription notification. Checks for a subscription request stored in the adapter and if there is, it
- * sends the notification to the subscribed vnfm.
- *
- * @param notification the notification to send to the vnfm
- * @param subscriptionId the id of the subscription request
- * @return true if the notification is successfully sent
- */
- public boolean processSubscriptionNotification(final Object notification, final String subscriptionId) {
- final Optional<PkgmSubscriptionRequest> optionalSubscription =
- subscriptionManager.getSubscriptionRequest(subscriptionId);
- if (optionalSubscription.isPresent()) {
- final PkgmSubscriptionRequest subscriptionRequest = optionalSubscription.get();
- return notifyVnfm(subscriptionRequest, notification);
- }
- final String errorMessage = "No subscription found with subscriptionId " + subscriptionId
- + ". Unable to forward notification to subscriber.";
- logger.error(errorMessage);
- throw new SubscriptionNotFoundException(errorMessage);
- }
-
- private boolean notifyVnfm(final PkgmSubscriptionRequest subscriptionRequest, final Object notification) {
- if (!(notification instanceof PkgOnboardingNotification) && !(notification instanceof PkgChangeNotification)) {
- final String errorMessage =
- "An error occurred. Notification type not supported for: " + notification.getClass();
- logger.error(errorMessage);
- throw new NotificationTypeNotSupportedException(errorMessage);
- }
-
- final SubscriptionsAuthentication subscriptionsAuthentication = subscriptionRequest.getAuthentication();
- final AuthTypeEnum authType = getAuthType(subscriptionsAuthentication.getAuthType());
- final NotificationServiceProvider sender = notificationServiceProviderFactory.getNotificationSender(authType);
-
- final Object vnfmNotificationObject = convertEtsiCatalogNotification(notification);
-
- if (sender.send(vnfmNotificationObject, subscriptionsAuthentication, subscriptionRequest.getCallbackUri())) {
- logger.info("Notification delivered successfully {}", notification);
- return true;
- }
-
- logger.error("Failed to deliver notification.");
- return false;
- }
-
- private SubscriptionsAuthentication.AuthTypeEnum getAuthType(final List<AuthTypeEnum> authTypes) {
- if (authTypes.contains(SubscriptionsAuthentication.AuthTypeEnum.TLS_CERT)) {
- return SubscriptionsAuthentication.AuthTypeEnum.TLS_CERT;
- }
- if (authTypes.contains(SubscriptionsAuthentication.AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS)) {
- return SubscriptionsAuthentication.AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS;
- }
- if (authTypes.contains(SubscriptionsAuthentication.AuthTypeEnum.BASIC)) {
- return SubscriptionsAuthentication.AuthTypeEnum.BASIC;
- }
- final String errorMessage =
- "An error occurred. No supported authentication type provided in subscription request.";
- logger.error(errorMessage);
- throw new AuthenticationTypeNotSupportedException(errorMessage);
- }
-
- private Object convertEtsiCatalogNotification(final Object etsiCatalogNotification) {
- logger.info("Converting notification:\n {}", etsiCatalogNotification);
- if (conversionService.canConvert(etsiCatalogNotification.getClass(), VnfPackageOnboardingNotification.class)) {
- return conversionService.convert(etsiCatalogNotification, VnfPackageOnboardingNotification.class);
- } else if (conversionService.canConvert(etsiCatalogNotification.getClass(),
- VnfPackageChangeNotification.class)) {
- return conversionService.convert(etsiCatalogNotification, VnfPackageChangeNotification.class);
- }
- final String errorMessage = "An error occurred. Unable to convert provided notification object.";
- logger.error(errorMessage + "\n" + etsiCatalogNotification);
- throw new ConversionFailedException(errorMessage);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProvider.java
deleted file mode 100644
index 2fc7e19eb6..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-
-/**
- * Interface which lays out requirements for a Notification Service Provider
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-public interface NotificationServiceProvider {
-
- /**
- * Method to send a notification to a uri, given the subscription authentication
- *
- * @param notification The notification to send
- * @param subscriptionsAuthentication Object containing the authentication details
- * @param callbackUri The uri to send the notification to
- * @return true if notification is delivered successfully, otherwise false
- */
- boolean send(final Object notification, final SubscriptionsAuthentication subscriptionsAuthentication,
- final String callbackUri);
-
- /**
- * Method to get the supported authorization type of the service provider
- *
- * @return the supported AuthTypeEnum
- */
- AuthTypeEnum getAuthType();
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProviderFactory.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProviderFactory.java
deleted file mode 100644
index 2b8e818c9c..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/NotificationServiceProviderFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.AuthenticationTypeNotSupportedException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * Factory to provide a notification services
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@Component
-public class NotificationServiceProviderFactory {
-
- private static final Logger logger = getLogger(NotificationServiceProviderFactory.class);
- private static final Map<AuthTypeEnum, NotificationServiceProvider> CACHE = new HashMap<>();
-
- @Autowired
- public NotificationServiceProviderFactory(final List<NotificationServiceProvider> services) {
- for (final NotificationServiceProvider notificationServiceProvider : services) {
- logger.debug("Adding {} of type {} to cache", notificationServiceProvider.getClass().getCanonicalName(),
- notificationServiceProvider.getAuthType());
- CACHE.put(notificationServiceProvider.getAuthType(), notificationServiceProvider);
- }
- }
-
- /**
- * Get a notification service for a given authorization type
- *
- * @param type the type of authentication required
- * @return the notification service
- */
- public NotificationServiceProvider getNotificationSender(final AuthTypeEnum type) {
- final NotificationServiceProvider service = CACHE.get(type);
- if (service == null) {
- throw new AuthenticationTypeNotSupportedException("Unknown type: " + type);
- }
- return service;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthNotificationServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthNotificationServiceProvider.java
deleted file mode 100644
index 81dc743a22..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthNotificationServiceProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.InternalServerErrorException;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.configuration.rest.HttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Service
-public class OAuthNotificationServiceProvider extends AbstractNotificationServiceProvider
- implements NotificationServiceProvider {
-
- private static final Logger logger = getLogger(OAuthNotificationServiceProvider.class);
-
- @Override
- public boolean send(final Object notification, final SubscriptionsAuthentication subscriptionsAuthentication,
- final String callbackUri) {
- logger.info("Sending notification to uri: {}", callbackUri);
- logger.info("Object: {}", notification);
- final String token = getAccessToken(subscriptionsAuthentication);
-
- if (token == null) {
- logger.error("Failed to get access token");
- return false;
- }
-
- final HttpHeadersProvider httpHeadersProvider = getHttpHeadersProvider(token);
- final HttpRestServiceProvider httpRestServiceProvider = getHttpRestServiceProvider();
- final ResponseEntity<Void> responseEntity = httpRestServiceProvider.postHttpRequest(notification, callbackUri,
- httpHeadersProvider.getHttpHeaders(), Void.class);
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- logger.info("Notification sent successfully.");
- return true;
- }
-
- logger.error("Failed to send notification.");
- return false;
- }
-
- @Override
- public AuthTypeEnum getAuthType() {
- return AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS;
- }
-
- private BasicHttpHeadersProvider getHttpHeadersProvider(final String token) {
- final String authHeader = "Bearer " + token;
- return new BasicHttpHeadersProvider(authHeader);
- }
-
- private String getAccessToken(final SubscriptionsAuthentication subscriptionsAuthentication) {
- logger.info("Requesting Access Token.");
-
- final String tokenEndpoint = subscriptionsAuthentication.getParamsOauth2ClientCredentials().getTokenEndpoint();
-
- final HttpHeadersProvider httpHeadersProvider = getBasicHttpHeadersProviderWithBasicAuth(
- subscriptionsAuthentication.getParamsOauth2ClientCredentials().getClientId(),
- subscriptionsAuthentication.getParamsOauth2ClientCredentials().getClientPassword());
-
- final HttpRestServiceProvider httpRestServiceProvider = getHttpRestServiceProvider();
- final ResponseEntity<OAuthTokenResponse> responseEntity = httpRestServiceProvider.postHttpRequest(null,
- tokenEndpoint, httpHeadersProvider.getHttpHeaders(), OAuthTokenResponse.class);
- if (responseEntity.getStatusCode().is2xxSuccessful()) {
- if (responseEntity.getBody() != null) {
- logger.info("Returning Access Token.");
- return responseEntity.getBody().getAccessToken();
- }
- }
-
- final String errorMessage = "An error occurred. Unable to retrieve OAuth Token from VNFM for notification.";
- logger.error(errorMessage);
- throw new InternalServerErrorException(errorMessage);
- }
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthTokenResponse.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthTokenResponse.java
deleted file mode 100644
index 3e6f7bde2b..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/OAuthTokenResponse.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import java.io.Serializable;
-import javax.xml.bind.annotation.XmlElement;
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-public class OAuthTokenResponse implements Serializable {
-
- private static final long serialVersionUID = -6455742984985959926L;
-
- @XmlElement(name = "access_token")
- @SerializedName("access_token")
- private String accessToken;
-
- /**
- * Get the Accees Token
- *
- * @return the Access Token
- */
- public String getAccessToken() {
- return accessToken;
- }
-
- /**
- * Set the Access Token
- *
- * @param accessToken
- */
- public void setAccessToken(final String accessToken) {
- this.accessToken = accessToken;
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/SubscriptionManager.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/SubscriptionManager.java
deleted file mode 100644
index edae41525e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/SubscriptionManager.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.SubscriptionAuthentication.AuthTypeEnum.BASIC;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.cache.PkgmCacheServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProvider;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.BasicAuth;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesLinksSelf;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.ConversionFailedException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.InternalServerErrorException;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.SubscriptionNotFoundException;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.stereotype.Service;
-
-/**
- * Manages package management subscriptions from the VNFMs
- *
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@Service
-public class SubscriptionManager {
-
- private static final Logger logger = getLogger(SubscriptionManager.class);
- private final PkgmCacheServiceProvider packageManagementCacheServiceProvider;
- private final ConversionService conversionService;
- private final EtsiCatalogServiceProvider etsiCatalogServiceProvider;
- private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider;
-
- @Autowired
- public SubscriptionManager(final PkgmCacheServiceProvider packageManagementCacheServiceProvider,
- final ConversionService conversionService, final EtsiCatalogServiceProvider etsiCatalogServiceProvider,
- final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) {
- this.packageManagementCacheServiceProvider = packageManagementCacheServiceProvider;
- this.conversionService = conversionService;
- this.etsiCatalogServiceProvider = etsiCatalogServiceProvider;
- this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider;
- }
-
- public Optional<InlineResponse201> createSubscription(final PkgmSubscriptionRequest pkgmSubscriptionRequest)
- throws GeneralSecurityException {
-
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest =
- buildEtsiCatalogManagerPkgmSubscriptionRequest(pkgmSubscriptionRequest);
-
- final Optional<PkgmSubscription> optionalEtsiCatalogManagerSubscription =
- etsiCatalogServiceProvider.postSubscription(etsiCatalogManagerSubscriptionRequest);
-
- if (optionalEtsiCatalogManagerSubscription.isPresent()) {
- final PkgmSubscription etsiCatalogManagerSubscription = optionalEtsiCatalogManagerSubscription.get();
- logger.debug("postPkgmSubscriptionRequest Response SubscriptionId: {}",
- Objects.requireNonNull(etsiCatalogManagerSubscription.getId()));
- final String subscriptionId = etsiCatalogManagerSubscription.getId();
-
- packageManagementCacheServiceProvider.addSubscription(subscriptionId, pkgmSubscriptionRequest);
-
- final InlineResponse201 response = new InlineResponse201();
- response.setId(subscriptionId);
- response.setFilter(pkgmSubscriptionRequest.getFilter());
- response.setCallbackUri(vnfmAdapterUrlProvider.getSubscriptionUriString(subscriptionId));
- response.setLinks(new SubscriptionsLinks()
- .self(new VnfPackagesLinksSelf().href(getSubscriptionUri(subscriptionId).toString())));
-
- return Optional.of(response);
- }
- throw new InternalServerErrorException(
- "Received empty response from POST to ETSI Catalog Manager Subscription Endpoint.");
- }
-
- public Optional<String> getSubscriptionId(final PkgmSubscriptionRequest pkgmSubscriptionRequest) {
- return packageManagementCacheServiceProvider.getSubscriptionId(pkgmSubscriptionRequest);
- }
-
- public Optional<InlineResponse201> getSubscription(final String subscriptionId) {
-
- logger.debug("Checking if subscrition with id: {} exists in ETSI Catalog Manager", subscriptionId);
- final Optional<NsdmSubscription> etsiCatalogSubscriptionOption =
- etsiCatalogServiceProvider.getSubscription(subscriptionId);
-
- if (!etsiCatalogSubscriptionOption.isPresent()) {
- logger.debug("Unable to find subscription in ETSI Catalog Manager using id: {}", subscriptionId);
- if (packageManagementCacheServiceProvider.getSubscription(subscriptionId).isPresent()) {
- logger.debug("will remove subcription with id: {} from local cache", subscriptionId);
- packageManagementCacheServiceProvider.deleteSubscription(subscriptionId);
- }
- }
-
- final Optional<PkgmSubscriptionRequest> optional =
- packageManagementCacheServiceProvider.getSubscription(subscriptionId);
- if (optional.isPresent()) {
- final PkgmSubscriptionRequest subscription = optional.get();
- return Optional.of(getInlineResponse2002(subscriptionId, subscription));
- }
- return Optional.empty();
- }
-
- public List<InlineResponse201> getSubscriptions() {
- final Map<String, PkgmSubscriptionRequest> subscriptions =
- packageManagementCacheServiceProvider.getSubscriptions();
- final List<InlineResponse201> response = new ArrayList<>();
- subscriptions.forEach((key, value) -> {
- final Optional<InlineResponse201> optional = getSubscription(key);
- if (optional.isPresent()) {
- response.add(optional.get());
- }
- });
- return response;
- }
-
- public boolean deleteSubscription(final String subscriptionId) {
- if (packageManagementCacheServiceProvider.getSubscription(subscriptionId).isPresent()) {
- try {
- if (etsiCatalogServiceProvider.deleteSubscription(subscriptionId)) {
- return packageManagementCacheServiceProvider.deleteSubscription(subscriptionId);
- }
- } catch (final SubscriptionNotFoundException subscriptionNotFoundException) {
- logger.error(
- "Unable to find subscription in ETSI Catalog Manager using id: {} will delete it from local cache",
- subscriptionId);
- return packageManagementCacheServiceProvider.deleteSubscription(subscriptionId);
- }
- }
- return false;
- }
-
- public URI getSubscriptionUri(final String subscriptionId) {
- return vnfmAdapterUrlProvider.getSubscriptionUri(subscriptionId);
- }
-
- public Optional<PkgmSubscriptionRequest> getSubscriptionRequest(final String subscriptionId) {
- return packageManagementCacheServiceProvider.getSubscription(subscriptionId);
- }
-
- private InlineResponse201 getInlineResponse2002(final String id, final PkgmSubscriptionRequest subscription) {
- return new InlineResponse201().id(id).filter(subscription.getFilter())
- .callbackUri(subscription.getCallbackUri());
- }
-
- private org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest buildEtsiCatalogManagerPkgmSubscriptionRequest(
- final PkgmSubscriptionRequest pkgmSubscriptionRequest) throws GeneralSecurityException {
-
- final org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest;
- try {
- etsiCatalogManagerSubscriptionRequest = conversionService.convert(pkgmSubscriptionRequest,
- org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest.class);
- } catch (final org.springframework.core.convert.ConversionException conversionException) {
- logger.error(conversionException.getMessage());
- throw new ConversionFailedException(
- "Could not convert Sol003 PkgmSubscriptionRequest to ETSI-Catalog Manager PkgmSubscriptionRequest");
- } catch (final Exception exception) {
- logger.error(exception.getMessage());
- throw new InternalServerErrorException(
- "Could not convert Sol003 PkgmSubscriptionRequest to ETSI-Catalog Manager PkgmSubscriptionRequest");
- }
-
- if (etsiCatalogManagerSubscriptionRequest != null) {
- etsiCatalogManagerSubscriptionRequest
- .setCallbackUri(vnfmAdapterUrlProvider.getEtsiSubscriptionNotificationBaseUrl());
-
- final ImmutablePair<String, String> immutablePair = vnfmAdapterUrlProvider.getDecryptAuth();
- if (!immutablePair.equals(ImmutablePair.nullPair())) {
- etsiCatalogManagerSubscriptionRequest.setAuthentication(
- new org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.SubscriptionAuthentication()
- .addAuthTypeItem(BASIC).paramsBasic(new BasicAuth().userName(immutablePair.getLeft())
- .password(immutablePair.getRight())));
- }
- return etsiCatalogManagerSubscriptionRequest;
- }
- throw new ConversionFailedException(
- "Failed to convert Sol003 PkgmSubscriptionRequest to ETSI-Catalog Manager PkgmSubscriptionRequest");
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/TlsNotificationServiceProvider.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/TlsNotificationServiceProvider.java
deleted file mode 100644
index 69ff5da3ec..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/subscriptionmgmt/TlsNotificationServiceProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.etsisol003adapter.pkgm.subscriptionmgmt;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication.AuthTypeEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.AuthenticationTypeNotSupportedException;
-import org.slf4j.Logger;
-import org.springframework.stereotype.Service;
-
-/**
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@Service
-public class TlsNotificationServiceProvider extends AbstractNotificationServiceProvider
- implements NotificationServiceProvider {
-
- private static final Logger logger = getLogger(TlsNotificationServiceProvider.class);
-
- @Override
- public boolean send(final Object notification, final SubscriptionsAuthentication subscriptionsAuthentication,
- final String callbackUri) {
- final String errorMessage = "An error occurred. Authentication type "
- + subscriptionsAuthentication.getAuthType().toString() + " not currently supported.";
- logger.error(errorMessage);
- throw new AuthenticationTypeNotSupportedException(errorMessage);
- }
-
-
- @Override
- public AuthTypeEnum getAuthType() {
- return AuthTypeEnum.TLS_CERT;
- }
-
-
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java
deleted file mode 100644
index efe6891f1e..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java
+++ /dev/null
@@ -1,591 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL;
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.net.URI;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.NOTIFICATIONLINKSERIALIZER;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgmLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.JSON;
-import org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageChangeNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageOnboardingNotification;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthenticationParamsBasic;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthenticationParamsOauth2ClientCredentials;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-@DirtiesContext(classMode = BEFORE_CLASS)
-public class EtsiSubscriptionNotificationControllerTest {
-
- @LocalServerPort
- private int port;
-
- private static final URI CALLBACK_URI = URI.create("http://test_callback_uri/notification");
- private static final String TOKEN_ENDPOINT = "http://test_token_endpoint_uri/";
- private static final String TOKEN = "dXNlcm5hbWU6cGFzc3dvcmQ=......";
- private static final String JSON_TOKEN = "{\"access_token\":\"" + TOKEN + "\"}";
- private static final String LOCALHOST_URL = "http://localhost:";
- private static final String NOTIFICATION_BASE_URL =
- ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL + "/notification";
- private static final String USERNAME = "username";
- private static final String PASSWORD = "password";
- private static final String EXPECTED_BASIC_AUTHORIZATION = "Basic dXNlcm5hbWU6cGFzc3dvcmQ=";
- private static final String EXPECTED_OAUTH_AUTHORIZATION = "Bearer " + TOKEN;
- private static final String NOTIFICATION_ID = "NOTIFICATION_ID";
- private static final String SUBSCRIPTION_ID = "SUBSCRIPTION_ID";
- private static final String TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG = "2020-01-01 01:01:01";
- private static final java.time.LocalDateTime TIMESTAMP = java.time.LocalDateTime.of(2020, 1, 1, 1, 1, 1, 1);
- private static final String VNFPKG_ID = UUID.randomUUID().toString();
- private static final String VNFD_ID = UUID.randomUUID().toString();
- private static final String EXPECTED_VNF_PACKAGE_HREF =
- "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/vnf_packages/" + VNFPKG_ID;
- private static final String EXPECTED_SUBSCRIPTION_HREF =
- "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/subscriptions/" + SUBSCRIPTION_ID;
-
-
- private BasicHttpHeadersProvider basicHttpHeadersProvider;
-
- @Autowired
- @Qualifier(CONFIGURABLE_REST_TEMPLATE)
- private RestTemplate restTemplate;
- private MockRestServiceServer mockRestServiceServer;
-
- private TestRestTemplate testRestTemplate;
-
- @Autowired
- private CacheManager cacheServiceProvider;
- private Cache cache;
-
- @Before
- public void setUp() {
- mockRestServiceServer = MockRestServiceServer.bindTo(restTemplate).build();
- basicHttpHeadersProvider = new BasicHttpHeadersProvider();
- cache = cacheServiceProvider.getCache(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE);
- cache.clear();
-
- final Gson gson = JSON.createGson().registerTypeAdapter(LocalDateTime.class,
- new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter()).create();
- testRestTemplate = new TestRestTemplate(
- new RestTemplateBuilder().additionalMessageConverters(new GsonHttpMessageConverter(gson)));
- }
-
-
- @After
- public void tearDown() {
- mockRestServiceServer.reset();
- cache.clear();
- }
-
- @Test
- public void testSubscriptionNotificationEndPoint_ReturnsNoContent() {
- final ResponseEntity<?> response = sendHttpGet(NOTIFICATION_BASE_URL);
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void testOnboardingNotificationSentOnToVnfmCallbackUri_SubscriptionRequestInCache_Success() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andExpect(jsonPath("$.id").value(NOTIFICATION_ID))
- .andExpect(jsonPath("$.notificationType")
- .value(VnfPackageOnboardingNotification.NotificationTypeEnum.VNFPACKAGEONBOARDINGNOTIFICATION
- .toString()))
- .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
- .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
- .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
- .andExpect(jsonPath("$._links")
- .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void testOnboardingNotificationNotSentOnToVnfmCallbackUri_SubscriptionRequestNotInCache_Fail() {
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "No subscription found with subscriptionId " + SUBSCRIPTION_ID
- + ". Unable to forward notification to subscriber.";
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testOnboardingNotificationSentOnToVnfmCallbackUri_BadRequestResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.BAD_REQUEST + ".\n" + "No result found for given url: " + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testOnboardingNotificationSentOnToVnfmCallbackUri_301MovedPermanentlyResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.MOVED_PERMANENTLY));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed.";
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testOnboardingNotificationSentOnToVnfmCallbackUri_NotFoundResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.NOT_FOUND + ".\n" + "No result found for given url: " + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testOnboardingNotificationSentOnToVnfmCallbackUri_InternalServerErrorResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.INTERNAL_SERVER_ERROR.value() + ".\n" + "Unable to invoke HTTP POST using URL: "
- + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testChangeNotificationSentOnToVnfmCallbackUri_SubscriptionRequestInCache_Success() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andExpect(jsonPath("$.id").value(NOTIFICATION_ID))
- .andExpect(jsonPath("$.notificationType").value(
- VnfPackageChangeNotification.NotificationTypeEnum.VNFPACKAGECHANGENOTIFICATION.getValue()))
- .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
- .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
- .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
- .andExpect(
- jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString()))
- .andExpect(jsonPath("$.operationalState")
- .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString()))
- .andExpect(jsonPath("$._links")
- .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void testChangeNotificationNotSentOnToVnfmCallbackUri_SubscriptionRequestNotInCache_Fail() {
- final PkgChangeNotification notification = buildPkgChangeNotification();
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "No subscription found with subscriptionId " + SUBSCRIPTION_ID
- + ". Unable to forward notification to subscriber.";
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testChangeNotificationSentOnToVnfmCallbackUri_BadRequestResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.BAD_REQUEST + ".\n" + "No result found for given url: " + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testChangeNotificationSentOnToVnfmCallbackUri_NotFoundResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.NOT_FOUND + ".\n" + "No result found for given url: " + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testChangeNotificationSentOnToVnfmCallbackUri_InternalServerErrorResponseFromCallbackUri_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.INTERNAL_SERVER_ERROR.value() + ".\n" + "Unable to invoke HTTP POST using URL: "
- + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testNotificationSentOnToVnfm_BasicAuthUserPasswordAuthorized_Success() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgOnboardingNotification notification = buildPkgOnboardingNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andExpect(jsonPath("$.id").value(NOTIFICATION_ID))
- .andExpect(jsonPath("$.notificationType")
- .value(VnfPackageOnboardingNotification.NotificationTypeEnum.VNFPACKAGEONBOARDINGNOTIFICATION
- .toString()))
- .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
- .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
- .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
- .andExpect(jsonPath("$._links")
- .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void testNotificationSentOnToVnfm_BasicAuthUserPasswordNotAuthorized_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.BASIC);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION))
- .andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Sending of notification to VNFM failed with response: "
- + HttpStatus.UNAUTHORIZED.value() + ".\n" + "Unable to invoke HTTP POST using URL: " + CALLBACK_URI;
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testNotificationSentOnToVnfm_OAuthAuthorized_Success() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(TOKEN_ENDPOINT)).andExpect(method(HttpMethod.POST))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION))
- .andRespond(withSuccess(JSON_TOKEN, MediaType.APPLICATION_JSON));
-
- mockRestServiceServer.expect(requestTo(CALLBACK_URI)).andExpect(method(HttpMethod.POST))
- .andExpect(header("Authorization", EXPECTED_OAUTH_AUTHORIZATION))
- .andExpect(jsonPath("$.id").value(NOTIFICATION_ID))
- .andExpect(jsonPath("$.notificationType").value(
- VnfPackageChangeNotification.NotificationTypeEnum.VNFPACKAGECHANGENOTIFICATION.toString()))
- .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID))
- .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG))
- .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID))
- .andExpect(
- jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString()))
- .andExpect(jsonPath("$.operationalState")
- .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString()))
- .andExpect(jsonPath("$._links")
- .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF)))
- .andRespond(withSuccess());
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
- }
-
- @Test
- public void testNotificationSentOnToVnfm_OAuthTokenNotReceived_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- mockRestServiceServer.expect(requestTo(TOKEN_ENDPOINT)).andExpect(method(HttpMethod.POST))
- .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess());
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Unable to retrieve OAuth Token from VNFM for notification.";
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- @Test
- public void testNotificationSentOnToVnfm_TLSCertNotYetSupported_Fail() {
- final PkgmSubscriptionRequest subscriptionRequest =
- buildPkgmSubscriptionRequest(SubscriptionsAuthentication.AuthTypeEnum.TLS_CERT);
- cache.put(SUBSCRIPTION_ID, subscriptionRequest);
- final PkgChangeNotification notification = buildPkgChangeNotification();
-
- final ResponseEntity<?> response = sendHttpPost(notification);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
-
- final ProblemDetails problemDetails = (ProblemDetails) response.getBody();
- final String errorMessage = "An error occurred. Authentication type "
- + subscriptionRequest.getAuthentication().getAuthType().toString() + " not currently supported.";
-
- assertEquals(errorMessage, problemDetails.getDetail());
- }
-
- private PkgOnboardingNotification buildPkgOnboardingNotification() {
- final PkgOnboardingNotification notification = new PkgOnboardingNotification();
- notification.setId(NOTIFICATION_ID);
- notification
- .setNotificationType(PkgOnboardingNotification.NotificationTypeEnum.VNFPACKAGEONBOARDINGNOTIFICATION);
- notification.setSubscriptionId(SUBSCRIPTION_ID);
- notification.setTimeStamp(TIMESTAMP);
- notification.setVnfPkgId(VNFPKG_ID);
- notification.setVnfdId(VNFD_ID);
- notification.setLinks(buildPkgmLinks());
- return notification;
- }
-
- private PkgChangeNotification buildPkgChangeNotification() {
- final PkgChangeNotification notification = new PkgChangeNotification();
- notification.setId(NOTIFICATION_ID);
- notification.setNotificationType(PkgChangeNotification.NotificationTypeEnum.VNFPACKAGECHANGENOTIFICATION);
- notification.setSubscriptionId(SUBSCRIPTION_ID);
- notification.setTimeStamp(TIMESTAMP);
- notification.setVnfPkgId(VNFPKG_ID);
- notification.setVnfdId(VNFD_ID);
- notification.setChangeType(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE);
- notification.setOperationalState(PkgChangeNotification.OperationalStateEnum.ENABLED);
- notification.setLinks(buildPkgmLinks());
- return notification;
- }
-
- private PkgmLinks buildPkgmLinks() {
- return buildPkgmLinks("vnf_package_href", "subscription_href");
- }
-
- private PkgmLinks buildPkgmLinks(final String vnfPkgHref, final String subscriptionHref) {
- return new PkgmLinks().vnfPackage(new NOTIFICATIONLINKSERIALIZER().href(vnfPkgHref))
- .subscription(new NOTIFICATIONLINKSERIALIZER().href(subscriptionHref));
- }
-
- private PkgmSubscriptionRequest buildPkgmSubscriptionRequest(
- final SubscriptionsAuthentication.AuthTypeEnum authTypeEnum) {
- final PkgmSubscriptionRequest subscriptionRequest = new PkgmSubscriptionRequest();
- subscriptionRequest.setCallbackUri(CALLBACK_URI.toString());
- subscriptionRequest.setAuthentication(buildSubscriptionsAuthentication(authTypeEnum));
- return subscriptionRequest;
- }
-
- // TODO update for auth types other than basicAuth
- private SubscriptionsAuthentication buildSubscriptionsAuthentication(
- final SubscriptionsAuthentication.AuthTypeEnum authTypeEnum) {
- final SubscriptionsAuthentication subscriptionsAuthentication = new SubscriptionsAuthentication();
- final List<SubscriptionsAuthentication.AuthTypeEnum> authTypes = new ArrayList<>();
- authTypes.add(authTypeEnum);
- subscriptionsAuthentication.setAuthType(authTypes);
- if (authTypeEnum == SubscriptionsAuthentication.AuthTypeEnum.TLS_CERT) {
- // TODO: remove basic params and code for TLS
- final SubscriptionsAuthenticationParamsBasic basicParams =
- new SubscriptionsAuthenticationParamsBasic().userName(USERNAME).password(PASSWORD);
- subscriptionsAuthentication.setParamsBasic(basicParams);
- } else if (authTypeEnum == SubscriptionsAuthentication.AuthTypeEnum.OAUTH2_CLIENT_CREDENTIALS) {
- final SubscriptionsAuthenticationParamsOauth2ClientCredentials oathParams =
- new SubscriptionsAuthenticationParamsOauth2ClientCredentials().clientId(USERNAME)
- .clientPassword(PASSWORD).tokenEndpoint(TOKEN_ENDPOINT);
- subscriptionsAuthentication.setParamsOauth2ClientCredentials(oathParams);
- } else {
- final SubscriptionsAuthenticationParamsBasic basicParams =
- new SubscriptionsAuthenticationParamsBasic().userName(USERNAME).password(PASSWORD);
- subscriptionsAuthentication.setParamsBasic(basicParams);
- }
-
- return subscriptionsAuthentication;
- }
-
- private <T> ResponseEntity<ProblemDetails> sendHttpPost(final T notification) {
- final String testURL = LOCALHOST_URL + port + NOTIFICATION_BASE_URL;
- final HttpEntity<?> request = new HttpEntity<>(notification, basicHttpHeadersProvider.getHttpHeaders());
- return testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.POST, request,
- ProblemDetails.class);
- }
-
- private ResponseEntity<Void> sendHttpGet(final String url) {
- final String testURL = LOCALHOST_URL + port + url;
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- return testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.GET, request, Void.class);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementControllerTest.java
deleted file mode 100644
index 10e4ea3a58..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementControllerTest.java
+++ /dev/null
@@ -1,677 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.PACKAGE_MANAGEMENT_BASE_URL;
-import static org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.Checksum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.UriLink;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VNFPKGMLinkSerializer;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPackageArtifactInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPackageSoftwareImageInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2001;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesLinks;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author gareth.roper@est.tech
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class Sol003PackageManagementControllerTest {
-
- @LocalServerPort
- private int port;
-
- @Autowired
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- private RestTemplate restTemplate;
-
- @Autowired
- private TestRestTemplate testRestTemplate;
-
- private static final String VNF_PACKAGE_ID = "myVnfPackageId";
- private static final String ARTIFACT_PATH = "myArtifactPath";
- private static final String MSB_BASE_URL = "http://msb-iag.onap:80/api/vnfpkgm/v1/vnf_packages";
- private static final String VNFPKGM_BASE_URL = PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages";
- private static final String localhostUrl = "http://localhost:";
- private static final String GET_VNF_PACKAGES_URL = "";
- private static final String GET_VNF_PACKAGE_BY_ID_URL = "/" + VNF_PACKAGE_ID;
- private static final String VNFD_ID = "vnfdId";
- private static final String VNF_PROVIDER = "vnfProvider";
- private static final String VNF_PRODUCT_NAME = "vnfProductName";
- private static final String VNF_SOFTWARE_VERSION = "vnfSoftwareVersion";
- private static final String VNFD_VERSION = "vnfdVersion";
- private static final String ALGORITHM = "algorithm";
- private static final String HASH = "hash";
- private static final String EXPECTED_BASE_URL =
- "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/vnf_packages/";
- private static final String EXPECTED_SELF_HREF = EXPECTED_BASE_URL + VNF_PACKAGE_ID;
- private static final String EXPECTED_VNFD_HREF = EXPECTED_BASE_URL + VNF_PACKAGE_ID + "/vnfd";
- private static final String EXPECTED_PACKAGE_CONTENT_HREF = EXPECTED_BASE_URL + VNF_PACKAGE_ID + "/package_content";
-
- private MockRestServiceServer mockRestServiceServer;
- private BasicHttpHeadersProvider basicHttpHeadersProvider;
- private final Gson gson = new Gson();
-
- public Sol003PackageManagementControllerTest() {}
-
- @Before
- public void setUp() {
- final MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate);
- builder.ignoreExpectOrder(true);
- mockRestServiceServer = builder.build();
- basicHttpHeadersProvider = new BasicHttpHeadersProvider();
- }
-
- @After
- public void after() {
- mockRestServiceServer.reset();
- }
-
- @Test
- public void testGetPackageContent_ValidArray_Success() {
- final byte[] responseArray = buildByteArrayWithRandomData(10);
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(responseArray, MediaType.APPLICATION_OCTET_STREAM));
-
- final String testURL = "http://localhost:" + port + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/"
- + VNF_PACKAGE_ID + "/package_content";
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- final ResponseEntity<byte[]> responseEntity =
- testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.GET, request, byte[].class);
-
- assertEquals(byte[].class, responseEntity.getBody().getClass());
- assertArrayEquals(responseEntity.getBody(), responseArray);
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_Conflict_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.CONFLICT));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.CONFLICT, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_NotFound_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_UnauthorizedClient_Fail() {
- final String testURL = "http://localhost:" + port + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/"
- + VNF_PACKAGE_ID + "/package_content";
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
-
-
- final ResponseEntity<ProblemDetails> responseEntity =
- testRestTemplate.exchange(testURL, HttpMethod.GET, request, ProblemDetails.class);
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_InternalServerError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_BadRequest_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageContent_UnauthorizedServer_InternalError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testGetPackageContent_SuccessResponseFromServerWithNullPackage_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/package_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withSuccess());
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/package_content");
-
- assertEquals(ProblemDetails.class, responseEntity.getBody().getClass());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testGetPackageArtifact_ValidArray_Success() {
- final byte[] responseArray = buildByteArrayWithRandomData(10);
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(responseArray, MediaType.APPLICATION_OCTET_STREAM));
-
- final String testURL = "http://localhost:" + port + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/"
- + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH;
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- final ResponseEntity<byte[]> responseEntity =
- testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.GET, request, byte[].class);
-
- assertEquals(byte[].class, responseEntity.getBody().getClass());
- assertArrayEquals(responseEntity.getBody(), responseArray);
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_Conflict_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.CONFLICT));
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.CONFLICT, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_NotFound_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_UnauthorizedClient_Fail() {
- final String testURL = "http://localhost:" + port + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/"
- + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH;
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- final ResponseEntity<ProblemDetails> responseEntity =
- testRestTemplate.exchange(testURL, HttpMethod.GET, request, ProblemDetails.class);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_InternalServerError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_BadRequest_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageArtifact_UnauthorizedServer_InternalError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testGetPackageArtifact_SuccessResponseFromServerWithNullPackage_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH))
- .andExpect(method(HttpMethod.GET)).andRespond(withSuccess());
-
- final ResponseEntity<ProblemDetails> responseEntity =
- sendHttpRequest(VNF_PACKAGE_ID + "/artifacts/" + ARTIFACT_PATH);
-
- assertNotNull(responseEntity.getBody());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testVnfPackagesReceivedAsInlineResponse2001ListIfGetVnfPackagesSuccessful() {
- final VnfPkgInfo[] responses = createVnfPkgArray();
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(responses), MediaType.APPLICATION_JSON));
-
- final String testURL = localhostUrl + port + VNFPKGM_BASE_URL;
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
-
- final ResponseEntity<InlineResponse2001[]> responseEntity = testRestTemplate.withBasicAuth("test", "test")
- .exchange(testURL, HttpMethod.GET, request, InlineResponse2001[].class);
-
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- assertNotNull(responseEntity.getBody());
- final InlineResponse2001[] inlineResponse2001array = responseEntity.getBody();
- final InlineResponse2001 inlineResponse2001 = inlineResponse2001array[0];
- assertEquals(VNF_PACKAGE_ID, inlineResponse2001.getId());
- assertEquals(VNFD_ID, inlineResponse2001.getVnfdId());
- assertEquals(VNFD_ID, inlineResponse2001.getSoftwareImages().get(0).getId());
- assertEquals(VNF_PRODUCT_NAME, inlineResponse2001.getSoftwareImages().get(0).getName());
- assertEquals(ALGORITHM, inlineResponse2001.getChecksum().getAlgorithm());
- assertEquals(HASH, inlineResponse2001.getChecksum().getHash());
- assertEquals(ARTIFACT_PATH, inlineResponse2001.getAdditionalArtifacts().get(0).getArtifactPath());
- assertEquals(ALGORITHM, inlineResponse2001.getAdditionalArtifacts().get(0).getChecksum().getAlgorithm());
- assertEquals(HASH, inlineResponse2001.getAdditionalArtifacts().get(0).getChecksum().getHash());
- final VnfPackagesLinks links = inlineResponse2001.getLinks();
- assertNotNull(links);
- assertEquals(EXPECTED_SELF_HREF, links.getSelf().getHref());
- assertEquals(EXPECTED_VNFD_HREF, links.getVnfd().getHref());
- assertEquals(EXPECTED_PACKAGE_CONTENT_HREF, links.getPackageContent().getHref());
- }
-
- @Test
- public void test400BadRequestInfoReceivedAsProblemDetailsIfGetVnfPackagesIs400BadRequest() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGES_URL);
- assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode());
-
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("Error: Bad Request Received", problemDetails.getDetail());
- }
-
- @Test
- public void test404NotFoundInfoReceivedAsProblemDetailsIfGetVnfPackagesIs404NotFound() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGES_URL);
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
-
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("No Vnf Packages found", problemDetails.getDetail());
- }
-
- @Test
- public void test500InternalServerErrorProblemDetailsReceivedIfGetVnfPackagesReturns500InternalServerError() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGES_URL);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
-
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("Internal Server Error Occurred.", problemDetails.getDetail());
- }
-
- @Test
- public void test500InternalServerErrorProblemDetailsReceivedIfGetVnfPackagesReturnsANullPackage() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess());
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGES_URL);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
-
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"vnf_packages\" \n"
- + "endpoint.", problemDetails.getDetail());
- }
-
- @Test
- public void testVnfPackageReceivedAsInlineResponse2001IfGetVnfPackageByIdSuccessful() {
- final VnfPkgInfo response = createVnfPkgInfo(VNF_PACKAGE_ID);
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(response), MediaType.APPLICATION_JSON));
-
- final String testURL = localhostUrl + port + VNFPKGM_BASE_URL + "/" + VNF_PACKAGE_ID;
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- final ResponseEntity<InlineResponse2001> responseEntity = testRestTemplate.withBasicAuth("test", "test")
- .exchange(testURL, HttpMethod.GET, request, InlineResponse2001.class);
-
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- assertNotNull(responseEntity.getBody());
- final InlineResponse2001 inlineResponse2001 = responseEntity.getBody();
- assertEquals(VNF_PACKAGE_ID, inlineResponse2001.getId());
- assertEquals(VNFD_ID, inlineResponse2001.getVnfdId());
- assertEquals(VNFD_ID, inlineResponse2001.getSoftwareImages().get(0).getId());
- assertEquals(VNF_PRODUCT_NAME, inlineResponse2001.getSoftwareImages().get(0).getName());
- assertEquals(ALGORITHM, inlineResponse2001.getChecksum().getAlgorithm());
- assertEquals(HASH, inlineResponse2001.getChecksum().getHash());
- assertEquals(ARTIFACT_PATH, inlineResponse2001.getAdditionalArtifacts().get(0).getArtifactPath());
- assertEquals(ALGORITHM, inlineResponse2001.getAdditionalArtifacts().get(0).getChecksum().getAlgorithm());
- assertEquals(HASH, inlineResponse2001.getAdditionalArtifacts().get(0).getChecksum().getHash());
- final VnfPackagesLinks links = inlineResponse2001.getLinks();
- assertNotNull(links);
- assertEquals(EXPECTED_SELF_HREF, links.getSelf().getHref());
- assertEquals(EXPECTED_VNFD_HREF, links.getVnfd().getHref());
- assertEquals(EXPECTED_PACKAGE_CONTENT_HREF, links.getPackageContent().getHref());
-
- }
-
- @Test
- public void test400BadRequestInfoReceivedAsProblemDetailsIfGetVnfPackageByIdIs400BadRequest() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGE_BY_ID_URL);
-
- assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode());
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("Error: Bad Request Received", problemDetails.getDetail());
- }
-
- @Test
- public void test404NotFoundInfoReceivedAsProblemDetailsIfGetVnfPackageByIdIs404NotFound() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGE_BY_ID_URL);
-
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("No Vnf Package found with vnfPkgId: " + VNF_PACKAGE_ID, problemDetails.getDetail());
- }
-
- @Test
- public void test500InternalServerErrorProblemDetailsReceivedIfGetVnfPackageByIdReturns500InternalServerError() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGE_BY_ID_URL);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("Internal Server Error Occurred.", problemDetails.getDetail());
- }
-
- @Test
- public void test500InternalServerErrorProblemDetailsReceivedIfGetVnfPackageByIdReturnsANullPackage() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess());
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(GET_VNF_PACKAGE_BY_ID_URL);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
-
- assertNotNull(responseEntity.getBody());
- final ProblemDetails problemDetails = responseEntity.getBody();
- assertEquals("An error occurred, a null response was received by the\n"
- + " Sol003PackageManagementController from the EtsiCatalogManager using the GET \"vnf_packages\" by vnfPkgId: \""
- + VNF_PACKAGE_ID + "\" \n" + "endpoint.", problemDetails.getDetail());
- }
-
- // The below test method is here to improve code coverage and provide a foundation for writing
- // future tests
- @Test
- public void testGetPackageVnfd_ValidArray_Success() {
- final byte[] responseArray = buildByteArrayWithRandomData(10);
-
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(responseArray, MediaType.APPLICATION_OCTET_STREAM));
-
- final String testURL =
- "http://localhost:" + port + PACKAGE_MANAGEMENT_BASE_URL + "/vnf_packages/" + VNF_PACKAGE_ID + "/vnfd";
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- final ResponseEntity<byte[]> responseEntity =
- testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.GET, request, byte[].class);
-
- assertEquals(byte[].class, responseEntity.getBody().getClass());
- assertArrayEquals(responseEntity.getBody(), responseArray);
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_Conflict_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.CONFLICT));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.CONFLICT, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_NotFound_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_UnauthorizedClient_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_InternalServerError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.INTERNAL_SERVER_ERROR));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_BadRequest_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.BAD_REQUEST));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testOnGetPackageVnfd_UnauthorizedServer_InternalError_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.UNAUTHORIZED));
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertTrue(responseEntity.getBody() instanceof ProblemDetails);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- @Test
- public void testGetPackageVnfd_SuccessResponseFromServerWithNullPackage_Fail() {
- mockRestServiceServer.expect(requestTo(MSB_BASE_URL + "/" + VNF_PACKAGE_ID + "/vnfd"))
- .andExpect(method(HttpMethod.GET)).andRespond(withSuccess());
-
- final ResponseEntity<ProblemDetails> responseEntity = sendHttpRequest(VNF_PACKAGE_ID + "/vnfd");
-
- assertEquals(ProblemDetails.class, responseEntity.getBody().getClass());
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- }
-
- // Simply returns a byte array filled with random data, for use in the tests.
- private byte[] buildByteArrayWithRandomData(final int sizeInKb) {
- final Random rnd = new Random();
- final byte[] b = new byte[sizeInKb * 1024]; // converting kb to byte
- rnd.nextBytes(b);
- return b;
- }
-
- private ResponseEntity<ProblemDetails> sendHttpRequest(final String url) {
- final String testURL = localhostUrl + port + VNFPKGM_BASE_URL + "/" + url;
- final HttpEntity<?> request = new HttpEntity<>(basicHttpHeadersProvider.getHttpHeaders());
- return testRestTemplate.withBasicAuth("test", "test").exchange(testURL, HttpMethod.GET, request,
- ProblemDetails.class);
- }
-
- private VnfPkgInfo[] createVnfPkgArray() {
- final VnfPkgInfo[] vnfPkgInfoArray = new VnfPkgInfo[1];
- final VnfPkgInfo vnfPkgInfo = createVnfPkgInfo(VNF_PACKAGE_ID);
- vnfPkgInfoArray[0] = vnfPkgInfo;
- return vnfPkgInfoArray;
- }
-
- private VnfPkgInfo createVnfPkgInfo(final String vnfPackageId) {
- final VnfPkgInfo vnfPkgInfo = new VnfPkgInfo();
- vnfPkgInfo.setId(vnfPackageId);
- vnfPkgInfo.setVnfdId(VNFD_ID);
- vnfPkgInfo.setVnfProvider(VNF_PROVIDER);
- vnfPkgInfo.setVnfProductName(VNF_PRODUCT_NAME);
- vnfPkgInfo.setVnfSoftwareVersion(VNF_SOFTWARE_VERSION);
- vnfPkgInfo.setVnfdVersion(VNFD_VERSION);
- vnfPkgInfo.setChecksum(createVnfPkgChecksum());
- vnfPkgInfo.setSoftwareImages(createSoftwareImages());
- vnfPkgInfo.setAdditionalArtifacts(createAdditionalArtifacts());
- vnfPkgInfo.setLinks(createVNFPKGMLinkSerializerLinks());
- return vnfPkgInfo;
- }
-
- private Checksum createVnfPkgChecksum() {
- final Checksum checksum = new Checksum();
- checksum.setAlgorithm(ALGORITHM);
- checksum.setHash(HASH);
- return checksum;
- }
-
- private List<VnfPackageSoftwareImageInfo> createSoftwareImages() {
- final List<VnfPackageSoftwareImageInfo> softwareImages = new ArrayList<>();
- final VnfPackageSoftwareImageInfo vnfPackageSoftwareImageInfo = new VnfPackageSoftwareImageInfo();
- vnfPackageSoftwareImageInfo.setId(VNFD_ID);
- vnfPackageSoftwareImageInfo.setName(VNF_PRODUCT_NAME);
- vnfPackageSoftwareImageInfo.setProvider("");
- vnfPackageSoftwareImageInfo.setVersion("");
- vnfPackageSoftwareImageInfo.setChecksum(createVnfPkgChecksum());
- vnfPackageSoftwareImageInfo
- .setContainerFormat(VnfPackageSoftwareImageInfo.ContainerFormatEnum.fromValue("AKI"));
- softwareImages.add(vnfPackageSoftwareImageInfo);
- return softwareImages;
- }
-
- private List<VnfPackageArtifactInfo> createAdditionalArtifacts() {
- final List<VnfPackageArtifactInfo> vnfPackageArtifactInfos = new ArrayList<>();
- final VnfPackageArtifactInfo vnfPackageArtifactInfo =
- new VnfPackageArtifactInfo().artifactPath(ARTIFACT_PATH).checksum(createVnfPkgChecksum());
- vnfPackageArtifactInfos.add(vnfPackageArtifactInfo);
- return vnfPackageArtifactInfos;
- }
-
- private VNFPKGMLinkSerializer createVNFPKGMLinkSerializerLinks() {
- final String baseUrl = "http://msb-iag:443/api/vnfpkgm/v1/vnf_packages";
- return new VNFPKGMLinkSerializer().self(new UriLink().href(baseUrl + "/myVnfPackageId"))
- .vnfd(new UriLink().href(baseUrl + "/myVnfPackageId/vnfd"))
- .packageContent(new UriLink().href(baseUrl + "/myVnfPackageId/package_content"));
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionControllerTest.java
deleted file mode 100644
index 65be6a87f0..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/Sol003PackageManagementSubscriptionControllerTest.java
+++ /dev/null
@@ -1,403 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL;
-import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.PACKAGE_MANAGEMENT_BASE_URL;
-import static org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.io.File;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.BasicAuth;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.LinkSelf;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmNotificationsFilter;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscription;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.SubscriptionAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.Version;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfProducts;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfProductsProviders;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse2002;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.InlineResponse201;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.PkgmSubscriptionRequest;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsAuthentication;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilter1;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsFilterVnfProductsFromProviders;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.SubscriptionsLinks;
-import org.onap.so.adapters.etsisol003adapter.pkgm.model.VnfPackagesLinksSelf;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.test.web.client.match.MockRestRequestMatchers;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author Ronan Kenny (ronan.kenny@est.tech)
- * @author Gareth Roper (gareth.roper@est.tech)
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class Sol003PackageManagementSubscriptionControllerTest {
-
- private final Gson gson = new Gson();
- private final URI msbEndpoint = URI.create("http://msb-iag.onap:80/api/vnfpkgm/v1/subscriptions");
- private static final String _NOTIFICATION_CALLBACK_URI =
- "https://so-vnfm-adapter.onap:30406" + ETSI_SUBSCRIPTION_NOTIFICATION_BASE_URL;
- private static final String LOCALHOST_URL = "http://localhost:";
-
- @Autowired
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- private RestTemplate restTemplate;
- private MockRestServiceServer mockRestServiceServer;
- @Autowired
- private CacheManager cacheServiceProvider;
- @Autowired
- private Sol003PackageManagementSubscriptionController sol003PackageManagementSubscriptionController;
-
- @Autowired
- private TestRestTemplate testRestTemplate;
-
- @LocalServerPort
- private int port;
-
- private static final String ID = UUID.randomUUID().toString();
-
- @Before
- public void setUp() {
- mockRestServiceServer = MockRestServiceServer.bindTo(restTemplate).build();
- final Cache cache =
- cacheServiceProvider.getCache(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE);
- cache.clear();
- }
-
- @After
- public void after() {
- mockRestServiceServer.reset();
- }
-
- @Test
- public void testSuccessPostSubscription() throws GeneralSecurityException, URISyntaxException {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = postSubscriptionForTest();
- final ResponseEntity<InlineResponse201> response =
- (ResponseEntity<InlineResponse201>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest);
-
- final HttpHeaders headers = buildHttpHeaders(Objects.requireNonNull(response.getBody()).getCallbackUri());
-
- final SubscriptionsLinks subscriptionsLinks = new SubscriptionsLinks();
- final VnfPackagesLinksSelf vnfPackagesLinksSelf = new VnfPackagesLinksSelf();
- vnfPackagesLinksSelf.setHref("https://so-vnfm-adapter.onap:30406" + PACKAGE_MANAGEMENT_BASE_URL
- + "/subscriptions/" + response.getBody().getId());
- subscriptionsLinks.setSelf(vnfPackagesLinksSelf);
-
- assertEquals(pkgmSubscriptionRequest.getFilter(), response.getBody().getFilter());
- assertEquals(subscriptionsLinks, response.getBody().getLinks());
- assertEquals(response.getBody().getFilter(), pkgmSubscriptionRequest.getFilter());
- assert (response.getHeaders().equals(headers));
- assertThat(response.getStatusCode(), is(HttpStatus.CREATED));
- assertNotNull(response.getBody().getCallbackUri());
- }
-
- @Test
- public void testFailPostSubscriptionAlreadyExists() throws GeneralSecurityException {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = postSubscriptionForTest();
-
- final ResponseEntity<InlineResponse2002> response =
- (ResponseEntity<InlineResponse2002>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest);
-
- // Create duplicate entry
- final PkgmSubscriptionRequest pkgmSubscriptionRequest2 = buildPkgmSubscriptionRequest();
-
- final ResponseEntity<InlineResponse2002> response2002 =
- (ResponseEntity<InlineResponse2002>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest2);
-
- assertEquals(HttpStatus.SEE_OTHER, response2002.getStatusCode());
- }
-
- @Test
- public void testSuccessGetSubscriptionWithSubscriptionId() throws GeneralSecurityException, URISyntaxException {
-
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = postSubscriptionForTest();
-
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(new NsdmSubscription().id(ID)), MediaType.APPLICATION_JSON));
-
- final ResponseEntity<InlineResponse201> response =
- (ResponseEntity<InlineResponse201>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest);
- final String subscriptionId = response.getBody().getId();
-
-
-
- final ResponseEntity<InlineResponse201> responseEntity =
- (ResponseEntity<InlineResponse201>) sol003PackageManagementSubscriptionController
- .getSubscription(subscriptionId);
-
- final HttpHeaders headers = buildHttpHeaders(response.getBody().getCallbackUri());
-
- assertEquals(response.getBody().getFilter(), pkgmSubscriptionRequest.getFilter());
- assertEquals(response.getHeaders(), headers);
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- assertEquals(pkgmSubscriptionRequest.getFilter(), response.getBody().getFilter());
- // Ensure CallBackUri is set to new URI
- assertNotEquals(pkgmSubscriptionRequest.getCallbackUri(), response.getBody().getCallbackUri());
- }
-
- @Test
- public void testFailGetSubscriptionWithInvalidSubscriptionId() {
- final String invalidId = "invalidSubscriptionId";
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + invalidId)).andExpect(method(HttpMethod.GET))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
- final ResponseEntity<?> response = sol003PackageManagementSubscriptionController.getSubscription(invalidId);
- assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
- assertTrue(response.getBody() instanceof ProblemDetails);
- }
-
- @Test
- public void testSuccessGetSubscriptions() throws GeneralSecurityException {
- final PkgmSubscription pkgmSubscription = buildPkgmSubscription();
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = buildPkgmSubscriptionRequest();
-
- mockRestServiceServer.expect(requestTo(msbEndpoint)).andExpect(method(HttpMethod.POST))
- .andRespond(withSuccess(gson.toJson(pkgmSubscription), MediaType.APPLICATION_JSON));
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + ID)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(new NsdmSubscription().id(ID)), MediaType.APPLICATION_JSON));
-
- sol003PackageManagementSubscriptionController.postSubscriptionRequest(pkgmSubscriptionRequest);
- final ResponseEntity<List<InlineResponse201>> response =
- sol003PackageManagementSubscriptionController.getSubscriptions();
-
- final List<InlineResponse201> subscriptionsList = response.getBody();
-
- assertEquals(Objects.requireNonNull(response.getBody()).get(0).getFilter(),
- pkgmSubscriptionRequest.getFilter());
- assertNotNull(subscriptionsList != null);
- assertNotEquals('0', subscriptionsList.size());
- assertEquals(HttpStatus.OK, response.getStatusCode());
- }
-
- @Test
- public void testSuccessDeleteSubscriptionWithSubscriptionId() throws GeneralSecurityException {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = buildPkgmSubscriptionRequest();
- final PkgmSubscription pkgmSubscription = buildPkgmSubscription();
- final String subscriptionId = pkgmSubscription.getId();
-
- mockRestServiceServer.expect(requestTo(msbEndpoint)).andExpect(method(HttpMethod.POST))
- .andRespond(withSuccess(gson.toJson(pkgmSubscription), MediaType.APPLICATION_JSON));
-
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + subscriptionId)).andExpect(method(HttpMethod.DELETE))
- .andRespond(withStatus(HttpStatus.NO_CONTENT));
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + subscriptionId)).andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(new NsdmSubscription().id(subscriptionId)),
- MediaType.APPLICATION_JSON));
-
- final ResponseEntity<InlineResponse2002> responsePost =
- (ResponseEntity<InlineResponse2002>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest);
-
- final ResponseEntity responseDelete =
- sol003PackageManagementSubscriptionController.deleteSubscription(subscriptionId);
-
- // Attempt to retrieve the subscription after delete
- final ResponseEntity<InlineResponse2002> responseGetSubscription =
- (ResponseEntity<InlineResponse2002>) sol003PackageManagementSubscriptionController
- .getSubscription(subscriptionId);
-
- assertEquals(HttpStatus.NOT_FOUND, responseGetSubscription.getStatusCode());
- assertEquals(HttpStatus.NO_CONTENT, responseDelete.getStatusCode());
- }
-
- @Test
- public void testDeleteSubscription_SubscripitonNotFoundInEtsiCatalogManager_SubscriptionDeletedFromLocalCache()
- throws GeneralSecurityException {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = buildPkgmSubscriptionRequest();
- final PkgmSubscription pkgmSubscription = buildPkgmSubscription();
-
- mockRestServiceServer.expect(requestTo(msbEndpoint)).andExpect(method(HttpMethod.POST))
- .andRespond(withSuccess(gson.toJson(pkgmSubscription), MediaType.APPLICATION_JSON));
-
- mockRestServiceServer.expect(requestTo(msbEndpoint + "/" + ID)).andExpect(method(HttpMethod.DELETE))
- .andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ResponseEntity<InlineResponse2002> responsePost =
- (ResponseEntity<InlineResponse2002>) sol003PackageManagementSubscriptionController
- .postSubscriptionRequest(pkgmSubscriptionRequest);
-
- final Cache cache =
- cacheServiceProvider.getCache(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE);
- assertNotNull(cache.get(ID));
-
- final ResponseEntity responseDelete = sol003PackageManagementSubscriptionController.deleteSubscription(ID);
-
- assertEquals(HttpStatus.NO_CONTENT, responseDelete.getStatusCode());
- assertNull(cache.get(ID));
-
- }
-
- @Test
- public void testFailDeleteSubscriptionWithInvalidSubscriptionId() throws URISyntaxException, InterruptedException {
- final ResponseEntity<Void> responseDelete = (ResponseEntity<Void>) sol003PackageManagementSubscriptionController
- .deleteSubscription("invalidSubscriptionId");
- assertEquals(HttpStatus.NOT_FOUND, responseDelete.getStatusCode());
- }
-
-
- @Test
- public void testSuccessPostSubscriptionWithValidNotificationTypes() throws Exception {
-
- final String file = getAbsolutePath("src/test/resources/requests/SubscriptionRequest.json");
- final String json = new String(Files.readAllBytes(Paths.get(file)));
- final PkgmSubscriptionRequest request = gson.fromJson(json, PkgmSubscriptionRequest.class);
-
- mockRestServiceServer.expect(requestTo(msbEndpoint)).andExpect(method(HttpMethod.POST))
- .andExpect(MockRestRequestMatchers.content().json(gson.toJson(getEtsiCatalogPkgmSubscriptionRequest())))
- .andRespond(withSuccess(gson.toJson(buildPkgmSubscription()), MediaType.APPLICATION_JSON));
-
-
- final ResponseEntity<InlineResponse201> responseEntity =
- testRestTemplate.postForEntity(LOCALHOST_URL + port + PACKAGE_MANAGEMENT_BASE_URL + "/subscriptions",
- request, InlineResponse201.class);
-
- assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- final InlineResponse201 actual = responseEntity.getBody();
- assertEquals(ID, actual.getId());
-
-
- }
-
- private org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest getEtsiCatalogPkgmSubscriptionRequest() {
- return new org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.PkgmSubscriptionRequest()
- .filter(new PkgmNotificationsFilter()
- .addNotificationTypesItem(
- PkgmNotificationsFilter.NotificationTypesEnum.VNFPACKAGEONBOARDINGNOTIFICATION)
- .addVnfdIdItem("VNFDID").addVnfPkgIdItem("VNFPKGID")
- .addOperationalStateItem(PkgmNotificationsFilter.OperationalStateEnum.ENABLED)
- .addVnfProductsFromProvidersItem(new VnfProductsProviders().vnfProvider("EST")
- .addVnfProductsItem(new VnfProducts().vnfProductName("VnfProducts")
- .addVersionsItem(new Version().vnfSoftwareVersion("vnfSoftwareVersion")
- .addVnfdVersionsItem("version1")))))
- .callbackUri(_NOTIFICATION_CALLBACK_URI).authentication(
- new SubscriptionAuthentication().addAuthTypeItem(SubscriptionAuthentication.AuthTypeEnum.BASIC)
- .paramsBasic(new BasicAuth().userName("vnfm").password("password1$")));
- }
-
- private PkgmSubscriptionRequest buildPkgmSubscriptionRequest() {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = new PkgmSubscriptionRequest();
- final SubscriptionsFilter1 sub = buildSubscriptionsFilter();
- final SubscriptionsAuthentication auth = new SubscriptionsAuthentication();
- pkgmSubscriptionRequest.setFilter(sub);
- pkgmSubscriptionRequest.setCallbackUri(msbEndpoint.toString());
- pkgmSubscriptionRequest.setAuthentication(auth);
- return pkgmSubscriptionRequest;
- }
-
- private SubscriptionsFilter1 buildSubscriptionsFilter() {
- final SubscriptionsFilter1 sub = new SubscriptionsFilter1();
- final List<String> vnfdIdList = new ArrayList<>();
- final List<String> vnfPkgIdList = new ArrayList<>();
- final List<SubscriptionsFilter1.NotificationTypesEnum> notificationTypes = new ArrayList<>();
- final SubscriptionsFilterVnfProductsFromProviders subscriptionsFilterVnfProductsFromProviders =
- new SubscriptionsFilterVnfProductsFromProviders();
- final List<SubscriptionsFilterVnfProductsFromProviders> vnfProductsFromProviders = new ArrayList<>();
-
- vnfProductsFromProviders.add(subscriptionsFilterVnfProductsFromProviders);
- sub.setVnfdId(vnfdIdList);
- sub.setNotificationTypes(notificationTypes);
- sub.setVnfPkgId(vnfPkgIdList);
- sub.setVnfProductsFromProviders(vnfProductsFromProviders);
- return sub;
- }
-
- private PkgmSubscription buildPkgmSubscription() {
- final PkgmSubscription pkgmSubscription = new PkgmSubscription();
- final PkgmNotificationsFilter pkgmNotificationsFilter = new PkgmNotificationsFilter();
- final LinkSelf linkSelf = new LinkSelf();
-
- pkgmSubscription.setId(ID);
- pkgmSubscription.setCallbackUri(msbEndpoint + "/" + pkgmSubscription.getId().toString());
- pkgmSubscription.setFilter(pkgmNotificationsFilter);
- pkgmSubscription.setLinks(linkSelf);
- return pkgmSubscription;
- }
-
- private PkgmSubscriptionRequest postSubscriptionForTest() {
- final PkgmSubscriptionRequest pkgmSubscriptionRequest = buildPkgmSubscriptionRequest();
- final PkgmSubscription pkgmSubscription = buildPkgmSubscription();
-
- mockRestServiceServer.expect(requestTo(msbEndpoint)).andExpect(method(HttpMethod.POST))
- .andRespond(withSuccess(gson.toJson(pkgmSubscription), MediaType.APPLICATION_JSON));
- return pkgmSubscriptionRequest;
- }
-
- private HttpHeaders buildHttpHeaders(final String uri) throws URISyntaxException {
- final HttpHeaders headers = new HttpHeaders();
- final URI myUri = new URI(uri);
- headers.setLocation(myUri);
- return headers;
- }
-
- private String getAbsolutePath(final String path) {
- final File file = new File(path);
- return file.getAbsolutePath();
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/TestApplication.java b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/TestApplication.java
deleted file mode 100755
index 33535523d6..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/TestApplication.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.etsisol003adapter.pkgm.rest;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.cache.annotation.EnableCaching;
-
-@EnableCaching
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-public class TestApplication {
-
- public static void main(final String[] args) {
- new SpringApplication(TestApplication.class).run(args);
- }
-
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/application.yaml b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/application.yaml
deleted file mode 100644
index cdb6662191..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/application.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright © 2019 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- security:
- usercredentials:
- - username: test
- password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
- role: BPEL-Client
- - username: vnfm
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- main:
- allow-bean-definition-overriding: true
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
-
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- endpoint: https://aai.onap:8443
- version: v15
-
-sdc:
- username: sdcUser
- password: sdcPassword
- key: adadadadad
- endpoint: http://sdc.onap/1234A
-
-
-vnfmadapter:
- endpoint: https://so-vnfm-adapter.onap:30406
-
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use.
-
-etsi-catalog-manager:
- vnfpkgm:
- endpoint: http://msb-iag.onap:80/api/vnfpkgm/v1
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/requests/SubscriptionRequest.json b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/requests/SubscriptionRequest.json
deleted file mode 100644
index c38466f8e5..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-adapter/src/test/resources/requests/SubscriptionRequest.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "filter":
- {
- "notificationTypes": [
- "VnfPackageOnboardingNotification"
- ],
- "vnfProductsFromProviders": [
- {
- "vnfProvider": "EST",
- "vnfProducts": [
- {
- "vnfProductName": "VnfProducts",
- "versions": [
- {
- "vnfSoftwareVersion": "vnfSoftwareVersion",
- "vnfdVersions": [
- "version1"
- ]
- }
- ]
- }
- ]
- }
- ],
- "vnfdId": [
- "VNFDID"
- ],
- "vnfPkgId": [
- "VNFPKGID"
- ],
- "operationalState": ["ENABLED"]
- },
- "callbackUri": "http://so-vnfm-adapter:9093/api/vnfpkgm/v1/subscriptions",
- "authentication":
- {
- "authType": [
- "BASIC"
- ],
- "paramsBasic":
- {
- "userName": "vnfm",
- "password": "vnfm"
- }
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/pom.xml
deleted file mode 100644
index aaf4949144..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/pom.xml
+++ /dev/null
@@ -1,191 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-pkgm-api</artifactId>
- <name>ETSI SOL003 VNF Package Management Adapter API</name>
- <build>
- <plugins>
- <plugin>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <version>${version-swagger-codegen}</version>
- <executions>
- <execution>
- <id>etsicatalog-notification-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/ETSI-Catalog-Notification-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/etsicatalog/notification</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- <dateLibrary>java8-localdatetime</dateLibrary>
- </configOptions>
- </configuration>
- </execution>
- <execution>
- <id>sol003-vnf-packagemanagement-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL003-VNFPackageManagement-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/sol003-vnf-packagemanagement</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.pkgm.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.pkgm.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${project.basedir}/target/generated-sources/etsicatalog/notification/src/gen/java/main</source>
- <source>${project.basedir}/target/generated-sources/sol003-vnf-packagemanagement/src/gen/java/main</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <goals>
- <goal>generate</goal>
- </goals>
- <versionRange>[2.2.0,)</versionRange>
- </pluginExecutionFilter>
- <action>
- <execute>
- <runOnIncremental>false</runOnIncremental>
- </execute>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <dependencies>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-gson</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>retrofit</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-scalars</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.oltu.oauth2</groupId>
- <artifactId>org.apache.oltu.oauth2.client</artifactId>
- <version>${oltu-version}</version>
- </dependency>
- <dependency>
- <groupId>io.gsonfire</groupId>
- <artifactId>gson-fire</artifactId>
- <version>${gson-fire-version}</version>
- </dependency>
- <dependency>
- <groupId>org.threeten</groupId>
- <artifactId>threetenbp</artifactId>
- <version>${threetenbp-version}</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava2</groupId>
- <artifactId>rxjava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>adapter-rxjava2</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>${okio-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- </dependencies>
-</project>
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/ETSI-Catalog-Notification-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/ETSI-Catalog-Notification-API.json
deleted file mode 100644
index 6db54435d2..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/ETSI-Catalog-Notification-API.json
+++ /dev/null
@@ -1,279 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "title": "Modeling etsicatalog API",
- "description": "\n\nThe `swagger-ui` view can be found [here](/api/catalog/v1/swagger).\nThe `ReDoc` view can be found [here](/api/catalog/v1/redoc).\nThe swagger YAML document can be found [here](/api/catalog/v1/swagger.yaml).\nThe swagger JSON document can be found [here](/api/catalog/v1/swagger.json).",
- "version": "v1"
- },
- "host": "127.0.0.1:8000",
- "schemes": [
- "http"
- ],
- "basePath": "/",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
- "securityDefinitions": {
- "Basic": {
- "type": "basic"
- }
- },
- "security": [
- {
- "Basic": []
- }
- ],
- "paths": {
- "/URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageChangeNotification": {
- "get": {
- "operationId": "URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageChangeNotification_list",
- "description": "",
- "parameters": [],
- "responses": {
- "204": {
- "description": ""
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": [
- "VNF Package Management interface"
- ]
- },
- "post": {
- "operationId": "URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageChangeNotification_create",
- "description": "",
- "parameters": [
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/PkgChangeNotification"
- }
- }
- ],
- "responses": {
- "204": {
- "description": ""
- }
- },
- "tags": [
- "VNF Package Management interface"
- ]
- },
- "parameters": []
- },
- "/URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageOnboardingNotification": {
- "get": {
- "operationId": "URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageOnboardingNotification_list",
- "description": "",
- "parameters": [],
- "responses": {
- "204": {
- "description": ""
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": [
- "VNF Package Management interface"
- ]
- },
- "post": {
- "operationId": "URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageOnboardingNotification_create",
- "description": "",
- "parameters": [
- {
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/PkgOnboardingNotification"
- }
- }
- ],
- "responses": {
- "204": {
- "description": ""
- }
- },
- "tags": [
- "VNF Package Management interface"
- ]
- },
- "parameters": []
- }
- },
- "definitions": {
- "NOTIFICATION_LINKSERIALIZER": {
- "title": "Vnfpackage",
- "description": "Link to the resource representing the VNF package to which the notified change applies.",
- "required": [
- "href"
- ],
- "type": "object",
- "properties": {
- "href": {
- "title": "Href",
- "description": "URI of the referenced resource.",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "PkgmLinks": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "type": "object",
- "properties": {
- "vnfPackage": {
- "$ref": "#/definitions/NOTIFICATION_LINKSERIALIZER"
- },
- "subscription": {
- "$ref": "#/definitions/NOTIFICATION_LINKSERIALIZER"
- }
- }
- },
- "PkgChangeNotification": {
- "required": [
- "id",
- "notificationType",
- "timeStamp",
- "subscriptionId",
- "vnfPkgId",
- "changeType",
- "vnfdId",
- "_links"
- ],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of this notification.",
- "type": "string",
- "minLength": 1
- },
- "notificationType": {
- "title": "Notificationtype",
- "description": "Discriminator for the different notification types.",
- "type": "string",
- "enum": [
- "VnfPackageChangeNotification"
- ]
- },
- "timeStamp": {
- "title": "Timestamp",
- "description": "Date-time of the generation of the notification.",
- "type": "string",
- "format": "date-time"
- },
- "subscriptionId": {
- "title": "Subscriptionid",
- "description": "Identifier of the subscription that this notification relates to.",
- "type": "string",
- "minLength": 1
- },
- "vnfPkgId": {
- "title": "Vnfpkgid",
- "description": "Identifier of the VNF package.",
- "type": "string",
- "minLength": 1
- },
- "changeType": {
- "title": "Changetype",
- "description": "The type of change of the VNF package.",
- "type": "string",
- "enum": [
- "OP_STATE_CHANGE",
- "PKG_DELETE"
- ]
- },
- "operationalState": {
- "title": "Operationalstate",
- "description": "New operational state of the VNF package.",
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- },
- "vnfdId": {
- "title": "Vnfdid",
- "description": "This identifier, which is managed by the VNF provider, identifies the VNF package and the VNFD in a globally unique way.",
- "type": "string",
- "minLength": 1
- },
- "_links": {
- "$ref": "#/definitions/PkgmLinks"
- }
- }
- },
- "PkgOnboardingNotification": {
- "required": [
- "id",
- "notificationType",
- "subscriptionId",
- "timeStamp",
- "vnfPkgId",
- "vnfdId",
- "_links"
- ],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of this notification.",
- "type": "string",
- "minLength": 1
- },
- "notificationType": {
- "title": "Notificationtype",
- "description": "Discriminator for the different notification types.",
- "type": "string",
- "enum": [
- "VnfPackageOnboardingNotification"
- ]
- },
- "subscriptionId": {
- "title": "Subscriptionid",
- "description": "Identifier of the subscription that this notification relates to.",
- "type": "string",
- "minLength": 1
- },
- "timeStamp": {
- "title": "Timestamp",
- "description": "Date-time of the generation of the notification.",
- "type": "string",
- "format": "date-time"
- },
- "vnfPkgId": {
- "title": "Vnfpkgid",
- "description": "Identifier of the VNF package.",
- "type": "string",
- "minLength": 1
- },
- "vnfdId": {
- "title": "Vnfdid",
- "description": "This identifier, which is managed by the VNF provider, identifies the VNF package and the VNFD in a globally unique way.",
- "type": "string",
- "minLength": 1
- },
- "_links": {
- "$ref": "#/definitions/PkgmLinks"
- }
- }
- }
- }
-}
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/SOL003-VNFPackageManagement-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/SOL003-VNFPackageManagement-API.json
deleted file mode 100644
index 17d81f44c1..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-api/src/main/resources/SOL003-VNFPackageManagement-API.json
+++ /dev/null
@@ -1,7352 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "version": "1.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1",
- "title": "SOL003 - VNF Package Management interface",
- "description": "SOL003 - VNF Package Management interface\n\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\n\nIn clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based filtering mechanism is defined. This mechanism is currently not included in the corresponding OpenAPI design for this GS version. Changes to the attribute-based filtering mechanism are being considered in v2.5.1 of this GS for inclusion in the corresponding future ETSI NFV OpenAPI design.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n",
- "license": {
- "name": "ETSI Forge copyright notice",
- "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- }
- },
- "externalDocs": {
- "description": "ETSI GS NFV-SOL 003 V2.5.1",
- "url": "https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.05.01_60/gs_nfv-sol003v020501p.pdf"
- },
- "basePath": "/vnfpkgm/v1",
- "schemes": [
- "https"
- ],
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json"
- ],
- "paths": {
- "/api-versions": {
- "parameters": [
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": false,
- "type": "string"
- }
- ],
- "get": {
- "summary": "Retrieve API version information",
- "description": "The GET method reads API version information. This method shall follow the provisions specified in table 4.6.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not supported.\n",
- "responses": {
- "200": {
- "description": "200 OK\nAPI version information was read successfully. The response body shall contain 4.4 API version information, as defined in clause 4.4.1.13.\n",
- "schema": {
- "description": "This type represents API version information. It shall comply with the provisions defined in table 4.4.1.13-1 (SOL003).\n",
- "type": "object",
- "required": [
- "uriPrefix",
- "apiVersions"
- ],
- "properties": {
- "uriPrefix": {
- "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/\n",
- "type": "string"
- },
- "apiVersions": {
- "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "version"
- ],
- "properties": {
- "version": {
- "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 4.6.1.\n",
- "type": "string"
- },
- "isDeprecated": {
- "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false). A deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n",
- "type": "boolean"
- },
- "retirementDate": {
- "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
- "type": "string",
- "format": "date-time"
- }
- }
- }
- }
- }
- },
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Version": {
- "description": "The used API version.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "413": {
- "description": "413 PAYLOAD TOO LARGE\nIf the payload body of a request is larger than the amount of data the API producer is willing or able to process, it shall respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for closing the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "414": {
- "description": "414 URI TOO LONG\nIf the request URI of a request is longer than the API producer is willing or able to process, it shall respond with this response code. This condition can e.g. be caused by passing long queries in the request URI of a GET request. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "422": {
- "description": "422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "429": {
- "description": "429 TOO MANY REQUESTS\nIf the API consumer has sent too many requests in a defined period of time and the API producer is able to detect that condition (\"rate limiting\"), the API producer shall respond with this response code, following the provisions in IETF RFC 6585 [17] for the use of the \"Retry-After\" HTTP header. The \"ProblemDetails\" structure shall be provided and shall include in the \"detail\" attribute more information about the source of the problem.\nThe period of time and allowed number of requests are configured within the API producer by means outside the scope of the present document.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "504": {
- "description": "504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_packages": {
- "get": {
- "description": "Query VNF Package Info\n\nThe GET method queries the information of the VNF packages matching the filter.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "filter",
- "description": "Attribute-based filtering expression according to clause 4.3.2. The VNFM shall support receiving this parameter as part of the URI query string. The NFVO may supply this parameter. All attribute names that appear in the VnfPkgInfo and in data types referenced from it shall be supported by the VNFM in the filter expression.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "all_fields",
- "description": "Include all complex attributes in the response. See clause 4.3.3 for details. The VNFM shall support this parameter.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "fields",
- "description": "Complex attributes to be included into the response. See clause 4.3.3 for details. The VNFM should support this parameter.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "exclude_fields",
- "description": "Complex attributes to be excluded from the response. See clause 4.3.3 for details. The VNFM should support this parameter.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "exclude_default",
- "description": "Indicates to exclude the following complex attributes from the response. See clause 4.3.3 for details. The VNFM shall support this parameter. The following attributes shall be excluded from the VnfPkgInfo structure in the response body if this parameter is provided, or none of the parameters \"all_fields,\" \"fields\", \"exclude_fields\", \"exclude_default\" are provided: -\tsoftwareImages -\tadditionalArtifacts -\tuserDefinedData.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "nextpage_opaque_marker",
- "description": "Marker to obtain the next page of a paged response. Shall be supported by the VNFM if the VNFM supports alternative 2 (paging) according to clause 4.7.2.1 for this resource.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nInformation about zero or more VNF packages was queried successfully. The response body shall contain in an array the VNF package info representations that match the attribute filter, i.e. zero or more VNF package representations as defined in clause 10.5.2.2. If the VNFM supports alternative 2 (paging) according to clause 4.7.2.1 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 4.7.2.3.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Link": {
- "description": "Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "type": "array",
- "items": {
- "description": "This type represents the information of an VNF package.\n",
- "type": "object",
- "required": [
- "id",
- "operationalState",
- "usageState",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "Provider of the VNF package and the VNFD. This information is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "Name to identify the VNF product. Invariant for the VNF product lifetime. This information is copied from the VNFD. It shall be present after the VNF package content has been on-boarded and absent otherwise.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "softwareImages": {
- "description": "Information about VNF package artifacts that are software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n",
- "type": "array",
- "items": {
- "description": "This type represents an artifact contained in a VNF package which represents a software image.\n",
- "type": "object",
- "required": [
- "id",
- "name",
- "provider",
- "version",
- "checksum",
- "containerFormat",
- "diskFormat",
- "createdAt",
- "minDisk",
- "minRam",
- "size",
- "imagePath"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "name": {
- "description": "Name of the software image.\n",
- "type": "string"
- },
- "provider": {
- "description": "Provider of the software image.\n",
- "type": "string"
- },
- "version": {
- "description": "A Version.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "containerFormat": {
- "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format The list of permitted values was taken from \"Container formats\" in http://docs.openstack.org/image-guide/image-formats.html\n",
- "type": "string",
- "enum": [
- "AKI",
- "AMI",
- "ARI",
- "BARE",
- "DOCKER",
- "OVA",
- "OVF"
- ]
- },
- "diskFormat": {
- "description": "Disk format of a software image is the format of the underlying disk image. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - ISO: an archive format for the data contents of an optical disc, such as CD-ROM\n- QCOW2: a common disk image format, which can expand dynamically and supports copy on write\n- RAW: an unstructured disk image format - VDI: a common disk image format - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format The list of permitted values was adapted from \"Disk formats\" in http://docs.openstack.org/image-guide/image-formats.html\n",
- "type": "string",
- "enum": [
- "AKI",
- "AMI",
- "ISO",
- "QCOW2",
- "RAW",
- "VDI",
- "VHD",
- "VHDX",
- "VMDK"
- ]
- },
- "createdAt": {
- "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
- "type": "string",
- "format": "date-time"
- },
- "minDisk": {
- "description": "The minimal disk for this software image in bytes.\n",
- "type": "integer"
- },
- "minRam": {
- "description": "The minimal RAM for this software image in bytes.\n",
- "type": "integer"
- },
- "size": {
- "description": "Size of this software image in bytes.\n",
- "type": "integer"
- },
- "userMetadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "imagePath": {
- "description": "Path in the VNF package, which identifies the image artifact and also allows to access a copy of the image artifact.\n",
- "type": "string"
- }
- }
- }
- },
- "additionalArtifacts": {
- "description": "Information about VNF package artifacts contained in the VNF package that are not software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n",
- "type": "array",
- "items": {
- "description": "This type represents an artifact other than a software image which is contained in a VNF package.\n",
- "type": "object",
- "required": [
- "artifactPath",
- "checksum"
- ],
- "properties": {
- "artifactPath": {
- "description": "Path in the VNF package, which identifies the artifact and also allows to access a copy of the artifact.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "onboardingState": {
- "description": "CREATED: The VNF package resource has been created. UPLOADING: The associated VNF package content is being uploaded. PROCESSING: The associated VNF package content is being processed, e.g., validation.\nONBOARDED: The associated VNF package content has been successfully on-boarded.\n",
- "type": "string",
- "enum": [
- "CREATED",
- "UPLOADING",
- "PROCESSING",
- "ONBOARDED"
- ]
- },
- "operationalState": {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- },
- "usageState":
- {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n",
- "type": "string",
- "enum": [
- "IN_USE",
- "NOT_IN_USE"
- ]
- },
- "userDefinedData": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self",
- "packageContent"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "vnfd": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "packageContent": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_packages/{vnfPkgId}": {
- "parameters": [
- {
- "name": "vnfPkgId",
- "description": "Identifier of the VNF package. The identifier is allocated by the NFVO. This identifier can be retrieved from the \"vnfPkgId\" attribute in the VnfPackageOnboardingNotification or VnfPackageChangeNotification.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Query VNF Package Info\n\nThe GET method reads the information of an individual VNF package.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nInformation of the selected VNF packages.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "This type represents the information of an VNF package.\n",
- "type": "object",
- "required": [
- "id",
- "operationalState",
- "usageState",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfProvider": {
- "description": "Provider of the VNF package and the VNFD. This information is copied from the VNFD.\n",
- "type": "string"
- },
- "vnfProductName": {
- "description": "Name to identify the VNF product. Invariant for the VNF product lifetime. This information is copied from the VNFD. It shall be present after the VNF package content has been on-boarded and absent otherwise.\n",
- "type": "string"
- },
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "softwareImages": {
- "description": "Information about VNF package artifacts that are software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present unless it has been requested to be excluded per attribute selector.\n",
- "type": "array",
- "items": {
- "description": "This type represents an artifact contained in a VNF package which represents a software image.\n",
- "type": "object",
- "required": [
- "id",
- "name",
- "provider",
- "version",
- "checksum",
- "containerFormat",
- "diskFormat",
- "createdAt",
- "minDisk",
- "minRam",
- "size",
- "imagePath"
- ],
- "properties": {
- "id": {
- "description": "An identifier that is unique within a VNF descriptor.\n",
- "type": "string"
- },
- "name": {
- "description": "Name of the software image.\n",
- "type": "string"
- },
- "provider": {
- "description": "Provider of the software image.\n",
- "type": "string"
- },
- "version": {
- "description": "A Version.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "containerFormat": {
- "description": "Container format indicates whether the software image is in a file format that also contains metadata about the actual software. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - BARE: the image does not have a container or metadata envelope - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format The list of permitted values was taken from \"Container formats\" in http://docs.openstack.org/image-guide/image-formats.html\n",
- "type": "string",
- "enum": [
- "AKI",
- "AMI",
- "ARI",
- "BARE",
- "DOCKER",
- "OVA",
- "OVF"
- ]
- },
- "diskFormat": {
- "description": "Disk format of a software image is the format of the underlying disk image. Permitted values: - AKI: a kernel image format - AMI: a machine image format - ARI: a ramdisk image format - ISO: an archive format for the data contents of an optical disc, such as CD-ROM\n- QCOW2: a common disk image format, which can expand dynamically and supports copy on write\n- RAW: an unstructured disk image format - VDI: a common disk image format - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format The list of permitted values was adapted from \"Disk formats\" in http://docs.openstack.org/image-guide/image-formats.html\n",
- "type": "string",
- "enum": [
- "AKI",
- "AMI",
- "ISO",
- "QCOW2",
- "RAW",
- "VDI",
- "VHD",
- "VHDX",
- "VMDK"
- ]
- },
- "createdAt": {
- "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
- "type": "string",
- "format": "date-time"
- },
- "minDisk": {
- "description": "The minimal disk for this software image in bytes.\n",
- "type": "integer"
- },
- "minRam": {
- "description": "The minimal RAM for this software image in bytes.\n",
- "type": "integer"
- },
- "size": {
- "description": "Size of this software image in bytes.\n",
- "type": "integer"
- },
- "userMetadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "imagePath": {
- "description": "Path in the VNF package, which identifies the image artifact and also allows to access a copy of the image artifact.\n",
- "type": "string"
- }
- }
- }
- },
- "additionalArtifacts": {
- "description": "Information about VNF package artifacts contained in the VNF package that are not software images. This attribute shall not be present before the VNF package content is on-boarded. Otherwise, this attribute shall be present if the VNF package contains additional artifacts.\n",
- "type": "array",
- "items": {
- "description": "This type represents an artifact other than a software image which is contained in a VNF package.\n",
- "type": "object",
- "required": [
- "artifactPath",
- "checksum"
- ],
- "properties": {
- "artifactPath": {
- "description": "Path in the VNF package, which identifies the artifact and also allows to access a copy of the artifact.\n",
- "type": "string"
- },
- "checksum": {
- "description": "This type represents the checksum of a VNF package or an artifact file.\n",
- "type": "object",
- "required": [
- "algorithm",
- "hash"
- ],
- "properties": {
- "algorithm": {
- "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512.\n",
- "type": "string"
- },
- "hash": {
- "description": "The hexadecimal value of the checksum.\n",
- "type": "string"
- }
- }
- },
- "metadata": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- }
- }
- }
- },
- "onboardingState": {
- "description": "CREATED: The VNF package resource has been created. UPLOADING: The associated VNF package content is being uploaded. PROCESSING: The associated VNF package content is being processed, e.g., validation.\nONBOARDED: The associated VNF package content has been successfully on-boarded.\n",
- "type": "string",
- "enum": [
- "CREATED",
- "UPLOADING",
- "PROCESSING",
- "ONBOARDED"
- ]
- },
- "operationalState": {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- },
- "usageState":
- {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n",
- "type": "string",
- "enum": [
- "IN_USE",
- "NOT_IN_USE"
- ]
- },
- "userDefinedData": {
- "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type": "object"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self",
- "packageContent"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "vnfd": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "packageContent": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_packages/{vnfPkgId}/vnfd": {
- "parameters": [
- {
- "name": "vnfPkgId",
- "description": "Identifier of the on-boarded VNF package. The identifier is allocated by the NFVO. This identifier can be retrieved from the \"vnfPkgId\" attribute in the VnfPackageOnboardingNotification or VnfPackageChangeNotification.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Query VNF Package Info\n\nThe GET method reads the content of the VNFD within a VNF package. The VNFD can be implemented as a single file or as a collection of multiple files. If the VNFD is implemented in the form of multiple files, a ZIP file embedding these files shall be returned. If the VNFD is implemented as a single file, either that file or a ZIP file embedding that file shall be returned. The selection of the format is controlled by the \"Accept\" HTTP header passed in the GET request. * If the \"Accept\" header contains only \"text/plain\" and the VNFD is implemented as a single file, the file shall be returned;\n otherwise, an error message shall be returned.\n* If the \"Accept\" header contains only \"application/zip\", the single file or the multiple files that make up the VNFD shall be returned\n embedded in a ZIP file.\n* If the \"Accept\" header contains both \"text/plain\" and \"application/zip\", it is up to the NFVO to choose the format to\n return for a single-file VNFD; for a multi-file VNFD, a ZIP file\n shall be returned.\nThe default format of the ZIP file shall be the one specified in ETSI GS NFV-SOL 004 where only the YAML files representing the VNFD, and information needed to navigate the ZIP file and to identify the file that is the entry point for parsing the VNFD (such as TOSCA-meta or manifest files or naming conventions) are included.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Permitted values: \"text/plain\" and/or \"application/zip\" Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string",
- "enum": [
- "text/plain",
- "application/zip",
- "text/plain+application/zip"
- ]
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nOn success, the content of the VNFD is returned. The payload body shall contain a copy of the file representing the VNFD or a ZIP file that contains the file or multiple files representing the VNFD, as specified above. The \"Content-Type\" HTTP header shall be set according to the format of the returned file, i.e. to \"text/plain\" for a YAML file or to \"application/zip\" for a ZIP file.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "enum": [
- "text/plain",
- "application/zip"
- ],
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "Not Acceptable\nIf the \"Accept\" header does not contain at least one name of a content type for which the NFVO can provide a representation of the VNFD, the NFVO shall respond with this response code. The \"ProblemDetails\" structure may be included with the \"detail\" attribute providing more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nError: The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is due to the fact that \"onboardingState\" of the VNF package has a value different from \"ONBOARDED\". The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute shall convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_packages/{vnfPkgId}/package_content": {
- "parameters": [
- {
- "name": "vnfPkgId",
- "description": "Identifier of the VNF package. The identifier is allocated by the NFVO. This identifier can be retrieved from the \"vnfPkgId\" attribute in the VnfPackageOnboardingNotification or VnfPackageChangeNotification.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Fetch VNF Package\n\nThe GET method fetches the content of a VNF package identified by the VNF package identifier allocated by the NFVO.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response.\n",
- "in": "header",
- "required": true,
- "type": "string",
- "enum": [
- "text/plain",
- "application/zip"
- ]
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Range",
- "description": "The request may contain a \"Range\" HTTP header to obtain single range of bytes from the VNF package file. This can be used to continue an aborted transmission. If the NFVO does not support range requests, it should return the whole file with a 200 OK response instead.\n",
- "in": "header",
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nOn success, a copy of the VNF package file is returned. The response body shall include a copy of the VNF package file. The \"Content-Type HTTP\" header shall be set according to the type of the file, i.e. to \"application/zip\" for a VNF Package as defined in ETSI GS NFV-SOL 004.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "206": {
- "description": "206 PARTIAL CONTENT\nOn success, if the NFVO supports range requests, a single consecutive byte range from the content of the VNF package file is returned. The response body shall contain the requested part of the VNF package file. The \"Content-Range\" HTTP header shall be provided according to IETF RFC 7233. The \"Content-Type\" HTTP header shall be set as defined above for the \"200 OK\" response.\n",
- "headers": {
- "Content-Range": {
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nError: The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is due to the fact that \"onboardingState\" of the VNF package has a value different from \"ONBOARDED\". The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute shall convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThe byte range passed in the \"Range\" header did not match any available byte range in the VNF package file (e.g. \"access after end of file\"). The response body may contain a ProblemDetails structure.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}": {
- "parameters": [
- {
- "name": "artifactPath",
- "description": "Sequence of one or more path segments representing the path of the artifact within the VNF package. EXAMPLE: foo/bar/run.sh This identifier can be retrieved from the \"artifactPath\" attribute of the applicable \"additionalArtifacts\" entry in the body of the response to a GET request querying the \"Individual VNF package\" or the \"VNF packages\" resource.\n",
- "in": "path",
- "type": "string",
- "required": true
- },
- {
- "name": "vnfPkgId",
- "description": "Identifier of the VNF package. The identifier is allocated by the NFVO. This identifier can be retrieved from the \"vnfPkgId\" attribute in the VnfPackageOnboardingNotification or VnfPackageChangeNotification.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Fetch VNF Package Artifacts\n\nThe GET method fetches the content of an artifact within a VNF package.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response.\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Range",
- "description": "The request may contain a \"Range\" HTTP header to obtain single range of bytes from the VNF package file. This can be used to continue an aborted transmission. If the NFVO does not support range requests, it should return the whole file with a 200 OK response instead.\n",
- "in": "header",
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nOn success, the content of the artifact is returned. The payload body shall contain a copy of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004. The \"Content-Type\" HTTP header shall be set according to the content type of the artifact file. If the content type cannot be determined, the header shall be set to the value \"application/octet-stream\".\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response. The \"Content-Type\" HTTP header shall be set according to the content type of the artifact file. If the content type cannot be determined, the header shall be set to the value \"application/octet-stream\".\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "206": {
- "description": "206 PARTIAL CONTENT\nOn success, if the NFVO supports range requests, a single consecutive byte range from the content of the VNF package file is returned. The response body shall contain the requested part of the VNF package file. The \"Content-Range\" HTTP header shall be provided according to IETF RFC 7233. The \"Content-Type\" HTTP header shall be set as defined above for the \"200 OK\" response.\n",
- "headers": {
- "Content-Range": {
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "409": {
- "description": "Conflict\nError: The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is due to the fact that \"onboardingState\" of the VNF package has a value different from \"ONBOARDED\". The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute shall convey more information about the error.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "Requested Range Not Satisfiable\nThe byte range passed in the \"Range\" header did not match any available byte range in the VNF package file (e.g. \"access after end of file\"). The response body may contain a ProblemDetails structure.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions": {
- "post": {
- "description": "Subscribe\n\nThe POST method creates a new subscription. Creation of two subscription resources with the same callbackURI and the same filter can result in performance degradation and will provide duplicates of notifications to the VNFM, and might make sense only in very rare use cases. Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the same filter and callbackUri already exists (in which case it shall return the “201 Created” response code), or may decide to not create a duplicate subscription resource (in which case it shall return a “303 See Other” response code referencing the existing subscription resource with the same filter and callbackUri).\n",
- "parameters": [
- {
- "name": "PkgmSubscriptionRequest",
- "description": "Representation of the created subscription resource. The HTTP response shall include a \"Location\" HTTP header that points to the created subscription resource.\n",
- "in": "body",
- "required": true,
- "schema": {
- "description": "This type represents a subscription request related to VNF package management notifications about VNF package on-boarding or changes.\n",
- "type": "object",
- "required": [
- "callbackUri"
- ],
- "properties": {
- "filter": {
- "description": "This type represents a subscription filter related to notifications related to VNF package management. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "VnfPackageOnboardingNotification",
- "VnfPackageChangeNotification"
- ]
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF packages that contain VNF products from certain providers. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProvider"
- ],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF packages that contain VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProductName"
- ],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF packages that contain VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfSoftwareVersion"
- ],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF packages that contain VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A Version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfdId": {
- "description": "Match VNF packages with a VNFD identifier listed in the attribute. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfPkgId": {
- "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "operationalState":
- {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "array",
- "items":
- {
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- }
- },
- "usageState":
- {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n",
- "type": "array",
- "items":
- {
- "type": "string",
- "enum": [
- "IN_USE",
- "NOT_IN_USE"
- ]
- }
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "authentication": {
- "type": "object",
- "required": [
- "authType"
- ],
- "properties": {
- "authType": {
- "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "BASIC",
- "OAUTH2_CLIENT_CREDENTIALS",
- "TLS_CERT"
- ]
- }
- },
- "paramsBasic": {
- "description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type": "object",
- "properties": {
- "userName": {
- "description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type": "string"
- },
- "password": {
- "description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type": "string"
- }
- }
- },
- "paramsOauth2ClientCredentials": {
- "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type": "object",
- "properties": {
- "clientId": {
- "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type": "string"
- },
- "clientPassword": {
- "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type": "string"
- },
- "tokenEndpoint": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- },
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "201": {
- "description": "201 CREATED\nRepresentation of the created subscription resource. The HTTP response shall include a \"Location\" HTTP header that points to the created subscription resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Location": {
- "description": "The resource URI of the created VNF instance",
- "type": "string",
- "format": "url"
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "type": "array",
- "items": {
- "description": "This type represents a subscription related to notifications about VNF package management.\n",
- "type": "object",
- "required": [
- "id",
- "callbackUri",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications related to VNF package management. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "VnfPackageOnboardingNotification",
- "VnfPackageChangeNotification"
- ]
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF packages that contain VNF products from certain providers. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProvider"
- ],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF packages that contain VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProductName"
- ],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF packages that contain VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfSoftwareVersion"
- ],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF packages that contain VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A Version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfdId": {
- "description": "Match VNF packages with a VNFD identifier listed in the attribute. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfPkgId": {
- "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "operationalState":
- {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "array",
- "items":
- {
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- }
- },
- "usageState":
- {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n",
- "type": "array",
- "items":
- {
- "type": "string",
- "enum": [
- "IN_USE",
- "NOT_IN_USE"
- ]
- }
- } }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "303": {
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "get": {
- "description": "Query Subscription Information\n\nThe GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for resynchronization after error situations.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "filter",
- "description": "Attribute-based filtering expression according to clause 4.3.2. The VNFM shall support receiving this parameter as part of the URI query string. The NFVO may supply this parameter. All attribute names that appear in the PkgmSubscription and in data types referenced from it shall be supported by the VNFM in the filter expression.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "nextpage_opaque_marker",
- "description": "Marker to obtain the next page of a paged response. Shall be supported by the VNFM if the VNFM supports alternative 2 (paging) according to clause 4.7.2.1 for this resource.\n",
- "in": "query",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nThe list of subscriptions was queried successfully. The representations body shall contain in an array the representations of all active subscriptions of the functional block that invokes the method , i.e. zero or more representations of VNF package Management subscriptions as defined in clause 10.5.2.4. If the VNFM supports alternative 2 (paging) according to clause 4.7.2.1 for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 4.7.2.3.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "Link": {
- "description": "Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- }
- },
- "schema": {
- "type": "array",
- "items": {
- "description": "This type represents a subscription related to notifications about VNF package management.\n",
- "type": "object",
- "required": [
- "id",
- "callbackUri",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications related to VNF package management. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "VnfPackageOnboardingNotification",
- "VnfPackageChangeNotification"
- ]
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF packages that contain VNF products from certain providers. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProvider"
- ],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF packages that contain VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProductName"
- ],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF packages that contain VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfSoftwareVersion"
- ],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF packages that contain VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A Version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfdId": {
- "description": "Match VNF packages with a VNFD identifier listed in the attribute. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfPkgId": {
- "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "operationalState": {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- },
- "usageState": {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n"
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions/{subscriptionId}": {
- "parameters": [
- {
- "name": "subscriptionId",
- "description": "Identifier of this subscription. This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new subscription resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n",
- "in": "path",
- "type": "string",
- "required": true
- }
- ],
- "get": {
- "description": "Query Subscription Information\n\nThe GET method reads an individual subscription.\n",
- "parameters": [
- {
- "name": "Accept",
- "description": "Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- },
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "200 OK\nRepresentation of the subscription resource.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "This type represents a subscription related to notifications about VNF package management.\n",
- "type": "object",
- "required": [
- "id",
- "callbackUri",
- "_links"
- ],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "filter": {
- "description": "This type represents a subscription filter related to notifications related to VNF package management. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types. Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n",
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "VnfPackageOnboardingNotification",
- "VnfPackageChangeNotification"
- ]
- }
- },
- "vnfProductsFromProviders": {
- "description": "If present, match VNF packages that contain VNF products from certain providers. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProvider"
- ],
- "properties": {
- "vnfProvider": {
- "description": "Name of the VNF provider to match.\n",
- "type": "string"
- },
- "vnfProducts": {
- "description": "If present, match VNF packages that contain VNF products with certain product names, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfProductName"
- ],
- "properties": {
- "vnfProductName": {
- "description": "Name of the VNF product to match.\n",
- "type": "string"
- },
- "versions": {
- "description": "If present, match VNF packages that contain VNF products with certain versions and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "vnfSoftwareVersion"
- ],
- "properties": {
- "vnfSoftwareVersion": {
- "description": "A Version.\n",
- "type": "string"
- },
- "vnfdVersions": {
- "description": "If present, match VNF packages that contain VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n",
- "type": "array",
- "items": {
- "description": "A Version.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfdId": {
- "description": "Match VNF packages with a VNFD identifier listed in the attribute. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "vnfPkgId": {
- "description": "Match VNF packages with a package identifier listed in the attribute. May be present if the \"notificationTypes\" attribute contains the value \"VnfPackageChangeNotification\", and shall be absent otherwise. The attributes \"vnfProductsFromProviders\", \"vnfdId\" and \"vnfPkgId\" are alternatives to reference to particular VNF packages in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type": "array",
- "items": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- }
- },
- "operationalState": {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "string",
- "enum": [
- "ENABLED",
- "DISABLED"
- ]
- },
- "usageState": {
- "description": "- IN_USE: VNF instances instantiated from this VNF package exist. - NOT_IN_USE: No existing VNF instance is instantiated from this VNF package.\n"
- }
- }
- },
- "callbackUri": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- },
- "_links": {
- "description": "Links to resources related to this resource.\n",
- "type": "object",
- "required": [
- "self"
- ],
- "properties": {
- "self": {
- "description": "This type represents a link to a resource using an absolute URI. It shall comply with the provisions defined in table 4.4.1.3-1.\n",
- "type": "object",
- "required": [
- "href"
- ],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "delete": {
- "description": "Terminate subscription\n\nThe DELETE method terminates an individual subscription.\n",
- "parameters": [
- {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "204": {
- "description": "204 NO CONTENT\nThe subscription resource was deleted successfully.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "405": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "416": {
- "description": "416 RANGE NOT SATISFIABLE\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": [
- "status",
- "detail"
- ],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/pom.xml
deleted file mode 100644
index 6554da3409..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/pom.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-pkgm-ext-clients</artifactId>
- <name>ETSI SOL003 VNF Package Management Adapter Ext Clients</name>
- <build>
- <plugins>
- <plugin>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <version>${version-swagger-codegen}</version>
- <executions>
- <execution>
- <id>etsicatalog-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/ETSI-Catalog-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/etsicatalog</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- </configOptions>
- </configuration>
- </execution>
- <execution>
- <id>sol003-packagemanagement-notification-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/sol003-vnf-packagemanagement/notification</output>
- <apiPackage>org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.api</apiPackage>
- <modelPackage>org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- <dateLibrary>java8-localdatetime</dateLibrary>
- </configOptions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${project.basedir}/target/generated-sources/sol003-vnf-packagemanagement/notification/src/gen/java/main</source>
- <source>${project.basedir}/target/generated-sources/etsicatalog/src/gen/java/main</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <goals>
- <goal>generate</goal>
- </goals>
- <versionRange>[2.2.0,)</versionRange>
- </pluginExecutionFilter>
- <action>
- <execute>
- <runOnIncremental>false</runOnIncremental>
- </execute>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <dependencies>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-gson</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>retrofit</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-scalars</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.oltu.oauth2</groupId>
- <artifactId>org.apache.oltu.oauth2.client</artifactId>
- <version>${oltu-version}</version>
- </dependency>
- <dependency>
- <groupId>io.gsonfire</groupId>
- <artifactId>gson-fire</artifactId>
- <version>${gson-fire-version}</version>
- </dependency>
- <dependency>
- <groupId>org.threeten</groupId>
- <artifactId>threetenbp</artifactId>
- <version>${threetenbp-version}</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava2</groupId>
- <artifactId>rxjava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>adapter-rxjava2</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>${okio-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/ETSI-Catalog-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/ETSI-Catalog-API.json
deleted file mode 100644
index 35a8c2bd3d..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/ETSI-Catalog-API.json
+++ /dev/null
@@ -1,3121 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "title": "Modeling etsicatalog API",
- "description": "\n\nThe `swagger-ui` view can be found [here](/api/catalog/v1/swagger).\nThe `ReDoc` view can be found [here](/api/catalog/v1/redoc).\nThe swagger YAML document can be found [here](/api/catalog/v1/swagger.yaml).\nThe swagger JSON document can be found [here](/api/catalog/v1/swagger.json).",
- "version": "v1"
- },
- "host": "127.0.0.1:8806",
- "schemes": ["http"],
- "basePath": "/",
- "consumes": ["application/json"],
- "produces": ["application/json"],
- "securityDefinitions": {
- "Basic": {
- "type": "basic"
- }
- },
- "security": [{
- "Basic": []
- }],
- "paths": {
- "/api/catalog/v1/callback_sample": {
- "get": {
- "operationId": "api_catalog_v1_callback_sample_list",
- "description": "Callback Sample.",
- "parameters": [],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": ["Sample interface"]
- },
- "parameters": []
- },
- "/api/catalog/v1/health_check": {
- "get": {
- "operationId": "api_catalog_v1_health_check_list",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Active"
- }
- },
- "tags": ["Health Check interface"]
- },
- "parameters": []
- },
- "/api/catalog/v1/jobs/{job_id}": {
- "get": {
- "operationId": "api_catalog_v1_jobs_read",
- "description": "Get job status",
- "parameters": [{
- "name": "job_id",
- "in": "query",
- "description": "job id",
- "type": "string"
- }, {
- "name": "responseId",
- "in": "query",
- "description": "response id",
- "type": "string"
- }],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/GetJobResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PostJobResponseResult"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "post": {
- "operationId": "api_catalog_v1_jobs_create",
- "description": "Update job status",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/PostJobRequest"
- }
- }, {
- "name": "job_id",
- "in": "query",
- "description": "job id",
- "type": "string"
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PostJobResponseResult"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PostJobResponseResult"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": [{
- "name": "job_id",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/catalog/v1/mandb/{modelName}": {
- "get": {
- "operationId": "api_catalog_v1_mandb_read",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": ["Sample interface"]
- },
- "delete": {
- "operationId": "api_catalog_v1_mandb_delete",
- "description": "",
- "parameters": [],
- "responses": {
- "204": {
- "description": ""
- }
- },
- "tags": ["Sample interface"]
- },
- "parameters": [{
- "name": "modelName",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/catalog/v1/nspackages": {
- "get": {
- "operationId": "api_catalog_v1_nspackages_list",
- "description": "Query NS packages",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/NsPackage"
- }
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "post": {
- "operationId": "api_catalog_v1_nspackages_create",
- "description": "On distribute NS package",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/NsPackageDistributeRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsPackageDistributeResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": []
- },
- "/api/catalog/v1/nspackages/{csarId}": {
- "get": {
- "operationId": "api_catalog_v1_nspackages_read",
- "description": "Query one NS package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsPackage"
- }
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "delete": {
- "operationId": "api_catalog_v1_nspackages_delete",
- "description": "Delete one NS package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsPackageDistributeResponse"
- }
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": [{
- "name": "csarId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/catalog/v1/service_packages": {
- "get": {
- "operationId": "api_catalog_v1_service_packages_list",
- "description": "Query Service packages",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/ServicePackage"
- }
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "post": {
- "operationId": "api_catalog_v1_service_packages_create",
- "description": "On distribute Service package",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ServicePackageDistributeRequest"
- }
- }],
- "responses": {
- "202": {
- "description": ""
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": []
- },
- "/api/catalog/v1/service_packages/{csarId}": {
- "get": {
- "operationId": "api_catalog_v1_service_packages_read",
- "description": "Query one Service package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/ServicePackage"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "delete": {
- "operationId": "api_catalog_v1_service_packages_delete",
- "description": "Delete one Service package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "204": {
- "description": ""
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": [{
- "name": "csarId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/catalog/v1/vnfpackages": {
- "get": {
- "operationId": "api_catalog_v1_vnfpackages_list",
- "description": "Query Nf packages",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/NfPackage"
- }
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "post": {
- "operationId": "api_catalog_v1_vnfpackages_create",
- "description": "On distribute Nf package",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/NfPackageDistributeRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PostJobResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": []
- },
- "/api/catalog/v1/vnfpackages/{csarId}": {
- "get": {
- "operationId": "api_catalog_v1_vnfpackages_read",
- "description": "Query one Nf package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NfPackage"
- }
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "delete": {
- "operationId": "api_catalog_v1_vnfpackages_delete",
- "description": "Delete one Nf package",
- "parameters": [{
- "name": "csarId",
- "in": "query",
- "description": "csarId",
- "type": "string"
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PostJobResponse"
- }
- },
- "500": {
- "description": "error message",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["Catalog interface"]
- },
- "parameters": [{
- "name": "csarId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/nsd/v1/health_check": {
- "get": {
- "operationId": "api_nsd_v1_health_check_list",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Active"
- }
- },
- "tags": ["Health Check interface"]
- },
- "parameters": []
- },
- "/api/nsd/v1/ns_descriptors": {
- "get": {
- "operationId": "api_nsd_v1_ns_descriptors_list",
- "description": "Query multiple NSDs",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/NsdInfo"
- }
- }
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "post": {
- "operationId": "api_nsd_v1_ns_descriptors_create",
- "description": "Create a NSD",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/CreateNsdInfoRequest"
- }
- }],
- "responses": {
- "201": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsdInfo"
- }
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": []
- },
- "/api/nsd/v1/ns_descriptors/{nsdInfoId}": {
- "get": {
- "operationId": "api_nsd_v1_ns_descriptors_read",
- "description": "Query a NSD",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsdInfo"
- }
- },
- "404": {
- "description": "NSDs do not exist"
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "delete": {
- "operationId": "api_nsd_v1_ns_descriptors_delete",
- "description": "Delete a NSD",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No content"
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": [{
- "name": "nsdInfoId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/nsd/v1/ns_descriptors/{nsdInfoId}/nsd_content": {
- "get": {
- "operationId": "api_nsd_v1_ns_descriptors_nsd_content_list",
- "description": "Download NSD content",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No content"
- },
- "404": {
- "description": "NSD does not exist."
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "put": {
- "operationId": "api_nsd_v1_ns_descriptors_nsd_content_update",
- "description": "Upload NSD content",
- "parameters": [],
- "responses": {
- "204": {
- "description": "PNFD file"
- },
- "500": {
- "description": "Internal error"
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": [{
- "name": "nsdInfoId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/nsd/v1/pnf_descriptors": {
- "get": {
- "operationId": "api_nsd_v1_pnf_descriptors_list",
- "description": "Query multiple PNFDs",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/PnfdInfo"
- }
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "post": {
- "operationId": "api_nsd_v1_pnf_descriptors_create",
- "description": "Create a PNFD",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/CreatePnfdInfoRequest"
- }
- }],
- "responses": {
- "201": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PnfdInfo"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": []
- },
- "/api/nsd/v1/pnf_descriptors/{pnfdInfoId}": {
- "get": {
- "operationId": "api_nsd_v1_pnf_descriptors_read",
- "description": "Query a PNFD",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PnfdInfo"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "delete": {
- "operationId": "api_nsd_v1_pnf_descriptors_delete",
- "description": "Delete a PNFD",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No content"
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": [{
- "name": "pnfdInfoId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/nsd/v1/pnf_descriptors/{pnfdInfoId}/pnfd_content": {
- "get": {
- "operationId": "Fetch PNFD content",
- "description": "Fetch PNFD content",
- "parameters": [],
- "responses": {
- "200": {
- "description": "PNFD file",
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "produces": ["application/octet-stream", "application/json"],
- "tags": ["NSD Management interface"]
- },
- "put": {
- "operationId": "api_nsd_v1_pnf_descriptors_pnfd_content_update",
- "description": "Upload PNFD content",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No content"
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": [{
- "name": "pnfdInfoId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/nsd/v1/subscriptions": {
- "get": {
- "operationId": "api_nsd_v1_subscriptions_list",
- "description": "Query subscriptions for Nsd Management",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/NsdmSubscription"
- }
- }
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "post": {
- "operationId": "api_nsd_v1_subscriptions_create",
- "description": "Create Subscription for NSD Management",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/NsdmSubscriptionRequest"
- }
- }],
- "responses": {
- "201": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsdmSubscription"
- }
- },
- "303": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": []
- },
- "/api/nsd/v1/subscriptions/{subscriptionId}": {
- "get": {
- "operationId": "api_nsd_v1_subscriptions_read",
- "description": "Query subscriptions for Nsd Management",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/NsdmSubscription"
- }
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "delete": {
- "operationId": "api_nsd_v1_subscriptions_delete",
- "description": "Delete subscription for Nsd Management",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No_Content"
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["NSD Management interface"]
- },
- "parameters": [{
- "name": "subscriptionId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/parser/v1/health_check": {
- "get": {
- "operationId": "api_parser_v1_health_check_list",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Active"
- }
- },
- "tags": ["Health Check interface"]
- },
- "parameters": []
- },
- "/api/parser/v1/parser": {
- "post": {
- "operationId": "api_parser_v1_parser_create",
- "description": "Parse model(NS, Service, VNF, PNF)",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ParseModelRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/ParseModelResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Parser interface"]
- },
- "parameters": []
- },
- "/api/parser/v1/parsernsd": {
- "post": {
- "operationId": "api_parser_v1_parsernsd_create",
- "description": "Parse NS model",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ParseModelRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/ParseModelResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Parser interface"]
- },
- "parameters": []
- },
- "/api/parser/v1/parserpnfd": {
- "post": {
- "operationId": "api_parser_v1_parserpnfd_create",
- "description": "Parse PNF model",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ParseModelRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/ParseModelResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Parser interface"]
- },
- "parameters": []
- },
- "/api/parser/v1/parservnfd": {
- "post": {
- "operationId": "api_parser_v1_parservnfd_create",
- "description": "Parse NF model",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/ParseModelRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/ParseModelResponse"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/InternalErrorRequest"
- }
- }
- },
- "tags": ["Parser interface"]
- },
- "parameters": []
- },
- "/api/vnfpkgm/v1/health_check": {
- "get": {
- "operationId": "api_vnfpkgm_v1_health_check_list",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Active"
- }
- },
- "tags": ["Health Check interface"]
- },
- "parameters": []
- },
- "/api/vnfpkgm/v1/subscriptions": {
- "get": {
- "operationId": "api_vnfpkgm_v1_subscriptions_list",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PkgmSubscription"
- }
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "post": {
- "operationId": "api_vnfpkgm_v1_subscriptions_create",
- "description": "",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/PkgmSubscriptionRequest"
- }
- }],
- "responses": {
- "201": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PkgmSubscription"
- }
- },
- "400": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": []
- },
- "/api/vnfpkgm/v1/subscriptions/{subscriptionId}": {
- "get": {
- "operationId": "api_vnfpkgm_v1_subscriptions_read",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/PkgmSubscription"
- }
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "delete": {
- "operationId": "api_vnfpkgm_v1_subscriptions_delete",
- "description": "",
- "parameters": [],
- "responses": {
- "204": {
- "description": ""
- },
- "404": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- },
- "500": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/SUBSCRIPTION_ProblemDetailsSerializer"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "subscriptionId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/vnfpkgm/v1/vnf_packages": {
- "get": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_list",
- "description": "Query multiple VNF package resource",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/VnfPkgInfo"
- }
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "post": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_create",
- "description": "Create an individual VNF package resource",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/CreateVnfPkgInfoRequest"
- }
- }],
- "responses": {
- "201": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/VnfPkgInfo"
- }
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": []
- },
- "/api/vnfpkgm/v1/vnf_packages/{vnfPkgId}": {
- "get": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_read",
- "description": "Query an individual VNF package resource",
- "parameters": [],
- "responses": {
- "200": {
- "description": "",
- "schema": {
- "$ref": "#/definitions/VnfPkgInfo"
- }
- },
- "404": {
- "description": "VNF package does not exist",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "delete": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_delete",
- "description": "Delete an individual VNF package resource",
- "parameters": [],
- "responses": {
- "204": {
- "description": "No content"
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "vnfPkgId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/vnfpkgm/v1/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}": {
- "get": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_artifacts_read",
- "description": "",
- "parameters": [],
- "responses": {
- "200": {
- "description": "Return the artifact file",
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "404": {
- "description": "Artifact not found",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "produces": ["application/octet-stream", "application/json"],
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "artifactPath",
- "in": "path",
- "required": true,
- "type": "string"
- }, {
- "name": "vnfPkgId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content": {
- "get": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_package_content_list",
- "description": "Fetch VNF package content",
- "parameters": [],
- "responses": {
- "200": {
- "description": "VNF package file",
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "404": {
- "description": "VNF package does not exist",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "produces": ["application/octet-stream", "application/json"],
- "tags": ["VNF Package Management interface"]
- },
- "put": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_package_content_update",
- "description": "Upload VNF package content",
- "parameters": [],
- "responses": {
- "202": {
- "description": "Successfully"
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "vnfPkgId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content/upload_from_uri": {
- "post": {
- "operationId": "api_vnfpkgm_v1_vnf_packages_package_content_upload_from_uri_create",
- "description": "Upload VNF package content from uri",
- "parameters": [{
- "name": "data",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/UploadVnfPackageFromUriRequest"
- }
- }],
- "responses": {
- "202": {
- "description": "Successfully"
- },
- "400": {
- "description": "Bad Request",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "vnfPkgId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/api/vnfpkgm/v1/vnf_packages/{vnfPkgId}/vnfd": {
- "get": {
- "operationId": "VNFD of an on-boarded VNF package",
- "description": "Read VNFD of an on-boarded VNF package",
- "parameters": [],
- "responses": {
- "200": {
- "description": "VNFD of an on-boarded VNF package",
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "404": {
- "description": "VNF package does not exist",
- "schema": {
- "type": "string"
- }
- },
- "500": {
- "description": "Internal error",
- "schema": {
- "type": "string"
- }
- }
- },
- "produces": ["application/octet-stream", "application/json"],
- "tags": ["VNF Package Management interface"]
- },
- "parameters": [{
- "name": "vnfPkgId",
- "in": "path",
- "required": true,
- "type": "string"
- }]
- },
- "/samples/": {
- "get": {
- "operationId": "samples_list",
- "description": "List all samples.",
- "parameters": [],
- "responses": {
- "200": {
- "description": ""
- }
- },
- "tags": ["Sample interface"]
- },
- "parameters": []
- }
- },
- "definitions": {
- "JobResponseHistoryList": {
- "description": "Response History List",
- "type": "object",
- "properties": {
- "status": {
- "title": "Status",
- "description": "Status",
- "type": "string",
- "minLength": 1
- },
- "progress": {
- "title": "Progress",
- "description": "Job Progress",
- "type": "string",
- "minLength": 1
- },
- "statusDescription": {
- "title": "Statusdescription",
- "description": "Status Description",
- "type": "string",
- "minLength": 1
- },
- "errorCode": {
- "title": "Errorcode",
- "description": "Error Code",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "responseId": {
- "title": "Responseid",
- "description": "Response Id",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "JobResponseDescriptor": {
- "title": "Responsedescriptor",
- "description": "Job Response Descriptor",
- "type": "object",
- "properties": {
- "status": {
- "title": "Status",
- "description": "Status",
- "type": "string",
- "minLength": 1
- },
- "progress": {
- "title": "Progress",
- "description": "Job Progress",
- "type": "string",
- "minLength": 1
- },
- "statusDescription": {
- "title": "Statusdescription",
- "description": "Status Description",
- "type": "string",
- "minLength": 1
- },
- "errorCode": {
- "title": "Errorcode",
- "description": "Error Code",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "responseId": {
- "title": "Responseid",
- "description": "Response Id",
- "type": "string",
- "minLength": 1
- },
- "responseHistoryList": {
- "description": "Response History List",
- "type": "array",
- "items": {
- "$ref": "#/definitions/JobResponseHistoryList"
- }
- }
- }
- },
- "GetJobResponse": {
- "type": "object",
- "properties": {
- "jobId": {
- "title": "Jobid",
- "description": "Job Id",
- "type": "string",
- "minLength": 1
- },
- "responseDescriptor": {
- "$ref": "#/definitions/JobResponseDescriptor"
- }
- }
- },
- "PostJobResponseResult": {
- "required": ["result"],
- "type": "object",
- "properties": {
- "result": {
- "title": "Result",
- "description": "Result",
- "type": "string",
- "minLength": 1
- },
- "msg": {
- "title": "Msg",
- "description": "Message",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "PostJobRequest": {
- "type": "object",
- "properties": {
- "progress": {
- "title": "Progress",
- "description": "Job Progress",
- "type": "string",
- "minLength": 1
- },
- "desc": {
- "title": "Desc",
- "description": "Description",
- "type": "string",
- "minLength": 1
- },
- "errcode": {
- "title": "Errcode",
- "description": "Error Code",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NsPackageInfo": {
- "title": "Packageinfo",
- "description": "NS Package Info",
- "type": "object",
- "properties": {
- "nsdId": {
- "title": "Nsdid",
- "description": "NSD ID",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "nsPackageId": {
- "title": "Nspackageid",
- "description": "NS Package ID",
- "type": "string",
- "x-nullable": true
- },
- "nsdProvider": {
- "title": "Nsdprovider",
- "description": "NSD Provider",
- "type": "string",
- "x-nullable": true
- },
- "nsdVersion": {
- "title": "Nsdversion",
- "description": "NSD Version",
- "type": "string",
- "x-nullable": true
- },
- "csarName": {
- "title": "Csarname",
- "description": "CSAR name",
- "type": "string",
- "x-nullable": true
- },
- "nsdModel": {
- "title": "Nsdmodel",
- "description": "NSD Model",
- "type": "string",
- "x-nullable": true
- },
- "downloadUrl": {
- "title": "Downloadurl",
- "description": "URL to download NSD Model",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- }
- },
- "x-nullable": true
- },
- "NsPackage": {
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "CSAR ID",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "packageInfo": {
- "$ref": "#/definitions/NsPackageInfo"
- }
- }
- },
- "InternalErrorRequest": {
- "required": ["error"],
- "type": "object",
- "properties": {
- "error": {
- "title": "Error",
- "description": "Error",
- "type": "string",
- "minLength": 1
- },
- "errorMessage": {
- "title": "Errormessage",
- "description": "Error Message",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NsPackageDistributeRequest": {
- "required": ["csarId"],
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "csarId",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NsPackageDistributeResponse": {
- "required": ["status", "statusDescription", "errorCode"],
- "type": "object",
- "properties": {
- "status": {
- "title": "Status",
- "description": "status",
- "type": "string",
- "minLength": 1
- },
- "statusDescription": {
- "title": "Statusdescription",
- "description": "statusDescription",
- "type": "string",
- "minLength": 1
- },
- "errorCode": {
- "title": "Errorcode",
- "description": "errorCode",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "ServicePackageInfo": {
- "title": "Packageinfo",
- "description": "Service Package Info",
- "type": "object",
- "properties": {
- "servicedId": {
- "title": "Servicedid",
- "description": "ServiceD ID",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "servicePackageId": {
- "title": "Servicepackageid",
- "description": "Service Package ID",
- "type": "string",
- "x-nullable": true
- },
- "servicedProvider": {
- "title": "Servicedprovider",
- "description": "ServiceD Provider",
- "type": "string",
- "x-nullable": true
- },
- "servicedVersion": {
- "title": "Servicedversion",
- "description": "ServiceD Version",
- "type": "string",
- "x-nullable": true
- },
- "csarName": {
- "title": "Csarname",
- "description": "CSAR name",
- "type": "string",
- "x-nullable": true
- },
- "servicedModel": {
- "title": "Servicedmodel",
- "description": "ServiceD Model",
- "type": "string",
- "x-nullable": true
- },
- "downloadUrl": {
- "title": "Downloadurl",
- "description": "URL to download ServiceD Model",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- }
- },
- "x-nullable": true
- },
- "ServicePackage": {
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "CSAR ID",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "packageInfo": {
- "$ref": "#/definitions/ServicePackageInfo"
- }
- }
- },
- "ServicePackageDistributeRequest": {
- "required": ["csarId"],
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "csarId",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NfPackageInfo": {
- "title": "Packageinfo",
- "description": "VNF Package Info",
- "required": ["vnfPackageId"],
- "type": "object",
- "properties": {
- "vnfdId": {
- "title": "Vnfdid",
- "description": "VNFD ID",
- "type": "string",
- "x-nullable": true
- },
- "vnfPackageId": {
- "title": "Vnfpackageid",
- "description": "VNF Package ID",
- "type": "string",
- "minLength": 1
- },
- "vnfdProvider": {
- "title": "Vnfdprovider",
- "description": "VNFD Provider",
- "type": "string",
- "x-nullable": true
- },
- "vnfdVersion": {
- "title": "Vnfdversion",
- "description": "VNFD Version",
- "type": "string",
- "x-nullable": true
- },
- "vnfVersion": {
- "title": "Vnfversion",
- "description": "VNF Version",
- "type": "string",
- "x-nullable": true
- },
- "csarName": {
- "title": "Csarname",
- "description": "CSAR Name",
- "type": "string",
- "x-nullable": true
- },
- "vnfdModel": {
- "title": "Vnfdmodel",
- "description": "VNFD Model",
- "type": "string",
- "x-nullable": true
- },
- "downloadUrl": {
- "title": "Downloadurl",
- "description": "URL to download VNFD Model",
- "type": "string",
- "x-nullable": true
- }
- }
- },
- "NfImageInfo": {
- "description": "Image Info",
- "required": ["index", "fileName", "imageId", "vimId", "vimUser", "tenant", "status"],
- "type": "object",
- "properties": {
- "index": {
- "title": "Index",
- "description": "Index of VNF Image",
- "type": "string",
- "minLength": 1
- },
- "fileName": {
- "title": "Filename",
- "description": "Image file name",
- "type": "string",
- "minLength": 1
- },
- "imageId": {
- "title": "Imageid",
- "description": "Image ID",
- "type": "string",
- "minLength": 1
- },
- "vimId": {
- "title": "Vimid",
- "description": "VIM ID",
- "type": "string",
- "minLength": 1
- },
- "vimUser": {
- "title": "Vimuser",
- "description": "User of VIM",
- "type": "string",
- "minLength": 1
- },
- "tenant": {
- "title": "Tenant",
- "description": "Tenant",
- "type": "string",
- "minLength": 1
- },
- "status": {
- "title": "Status",
- "description": "Status",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NfPackage": {
- "required": ["csarId", "packageInfo"],
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "CSAR ID",
- "type": "string",
- "minLength": 1
- },
- "packageInfo": {
- "$ref": "#/definitions/NfPackageInfo"
- },
- "imageInfo": {
- "description": "Image Info",
- "type": "array",
- "items": {
- "$ref": "#/definitions/NfImageInfo"
- },
- "x-nullable": true
- }
- }
- },
- "NfPackageDistributeRequest": {
- "required": ["csarId"],
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "CSAR ID",
- "type": "string",
- "minLength": 1
- },
- "vimIds": {
- "description": "A string for vimIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "labVimId": {
- "title": "Labvimid",
- "description": "A list of VIM IDs.",
- "type": "string"
- }
- }
- },
- "PostJobResponse": {
- "required": ["jobId"],
- "type": "object",
- "properties": {
- "jobId": {
- "title": "Jobid",
- "description": "jobId",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "ProblemDetails": {
- "title": "Onboardingfailuredetails",
- "description": "Failure details of current onboarding procedure.It shall be present when the nsdOnboardingState attribute is CREATED and the uploading or processing fails in NFVO.",
- "required": ["title", "detail"],
- "type": "object",
- "properties": {
- "type": {
- "title": "Type",
- "description": "A URI reference according to IETF RFC 3986 [10] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".",
- "type": "string",
- "x-nullable": true
- },
- "title": {
- "title": "Title",
- "description": "The HTTP status code for this occurrence of the problem.",
- "type": "integer"
- },
- "detail": {
- "title": "Detail",
- "description": "A human-readable explanation specific to this occurrence of the problem.",
- "type": "string",
- "minLength": 1
- },
- "instance": {
- "title": "Instance",
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.",
- "type": "string",
- "x-nullable": true
- },
- "additional_attributes": {
- "title": "Additional attributes",
- "description": "Any number of additional attributes, as defined in a specification or by an implementation.",
- "type": "object",
- "additionalProperties": {
- "description": "Additional attribute",
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "UriLink": {
- "title": "Self",
- "description": "URI of this resource.",
- "required": ["href"],
- "type": "object",
- "properties": {
- "href": {
- "title": "Href",
- "description": "URI of the referenced resource",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "NSD_LinkSerializer": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "required": ["self", "nsd_content"],
- "type": "object",
- "properties": {
- "self": {
- "$ref": "#/definitions/UriLink"
- },
- "nsd_content": {
- "$ref": "#/definitions/UriLink"
- }
- }
- },
- "NsdInfo": {
- "required": ["id", "nsdOnboardingState", "nsdOperationalState", "nsdUsageState", "_links"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of the onboarded individual NS descriptor resource.This identifier is allocated by the NFVO.",
- "type": "string",
- "minLength": 1
- },
- "nsdId": {
- "title": "Nsdid",
- "description": "This identifier, which is allocated by the NSD designer,identifies the NSD in a globally unique way.It is copied from the NSD content and shall be present after the NSD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "nsdName": {
- "title": "Nsdname",
- "description": "Name of the onboarded NSD.This information is copied from the NSD content and shall be present after the NSD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "nsdVersion": {
- "title": "Nsdversion",
- "description": "Version of the on-boarded NSD.This information is copied from the NSD content and shall be present after the NSD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "nsdDesigner": {
- "title": "Nsddesigner",
- "description": "Designer of the on-boarded NSD.This information is copied from the NSD content and shall be present after the NSD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "nsdInvariantId": {
- "title": "Nsdinvariantid",
- "description": "This identifier, which is allocated by the NSD designer,identifies an NSD in a version independent manner.This information is copied from the NSD content and shall be present after the NSD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "vnfPkgIds": {
- "description": "Identifies the VNF package for the VNFD referenced by the on-boarded NS descriptor resource.",
- "type": "array",
- "items": {
- "description": "Identifier of the VNF package",
- "type": "string"
- },
- "x-nullable": true
- },
- "pnfdInfoIds": {
- "description": "Identifies the PnfdInfo element for the PNFD referenced by the on-boarded NS descriptor resource.",
- "type": "array",
- "items": {
- "description": "Identifier of the PnfdInfo element",
- "type": "string"
- },
- "x-nullable": true
- },
- "nestedNsdInfoIds": {
- "description": "Identifies the NsdInfo element for the nested NSD referenced by the on-boarded NS descriptor resource.",
- "type": "array",
- "items": {
- "description": "Identifier of the NsdInfo element",
- "type": "string"
- },
- "x-nullable": true
- },
- "nsdOnboardingState": {
- "title": "Nsdonboardingstate",
- "description": "Onboarding state of the individual NS descriptor resource.",
- "type": "string",
- "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"]
- },
- "onboardingFailureDetails": {
- "$ref": "#/definitions/ProblemDetails"
- },
- "nsdOperationalState": {
- "title": "Nsdoperationalstate",
- "description": "Operational state of the individual NS descriptor resource.This attribute can be modified with the PATCH method.",
- "type": "string",
- "enum": ["ENABLED", "DISABLED"]
- },
- "nsdUsageState": {
- "title": "Nsdusagestate",
- "description": "Usage state of the individual NS descriptor resource.",
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- },
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User defined data for the individual NS descriptor resource.This attribute can be modified with the PATCH method.",
- "type": "object",
- "additionalProperties": {
- "description": "Key Value Pairs",
- "type": "string"
- },
- "x-nullable": true
- },
- "_links": {
- "$ref": "#/definitions/NSD_LinkSerializer"
- }
- }
- },
- "CreateNsdInfoRequest": {
- "type": "object",
- "properties": {
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User-defined data for the NS descriptor resource to be created.It shall be present when the user defined data is set for the individual NS descriptor resource to be created.",
- "type": "object",
- "additionalProperties": {
- "description": "Key Value Pairs",
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "PNFD_LinkSerializer": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "required": ["self", "pnfd_content"],
- "type": "object",
- "properties": {
- "self": {
- "$ref": "#/definitions/UriLink"
- },
- "pnfd_content": {
- "$ref": "#/definitions/UriLink"
- }
- }
- },
- "PnfdInfo": {
- "required": ["id", "pnfdOnboardingState", "pnfdUsageState", "_links"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of the onboarded individual PNF descriptor resource. This identifier is allocated by the NFVO.",
- "type": "string",
- "minLength": 1
- },
- "pnfdId": {
- "title": "Pnfdid",
- "description": "This identifier, which is allocated by the PNFD designer, identifies the PNFD in a globally unique way. It is copied from the PNFD content and shall be present after the PNFD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "pnfdName": {
- "title": "Pnfdname",
- "description": "Name of the onboarded PNFD. This information is copied from the PNFD content and shall be present after the PNFD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "pnfdVersion": {
- "title": "Pnfdversion",
- "description": "Version of the on-boarded PNFD. This information is copied from the PNFD content and shall be present after the PNFD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "pnfdProvider": {
- "title": "Pnfdprovider",
- "description": "Provider of the on-boarded PNFD. This information is copied from the PNFD content and shall be present after the PNFD content is on-boarded.",
- "type": "string",
- "x-nullable": true
- },
- "pnfdInvariantId": {
- "title": "Pnfdinvariantid",
- "description": "Identifies a PNFD in a version independent manner. This attribute is invariant across versions of PNFD.",
- "type": "string",
- "x-nullable": true
- },
- "pnfdOnboardingState": {
- "title": "Pnfdonboardingstate",
- "description": "Onboarding state of the individual PNF descriptor resource.",
- "type": "string",
- "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"]
- },
- "onboardingFailureDetails": {
- "$ref": "#/definitions/ProblemDetails"
- },
- "pnfdUsageState": {
- "title": "Pnfdusagestate",
- "description": "Usage state of the individual PNF descriptor resource.",
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- },
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User defined data for the individual PNF descriptor resource. This attribute can be modified with the PATCH method.",
- "type": "object",
- "additionalProperties": {
- "description": "Key Value Pairs",
- "type": "string"
- },
- "x-nullable": true
- },
- "_links": {
- "$ref": "#/definitions/PNFD_LinkSerializer"
- }
- }
- },
- "SUBSCRIPTION_ProblemDetailsSerializer": {
- "required": ["status", "detail"],
- "type": "object",
- "properties": {
- "type": {
- "title": "Type",
- "description": "Type",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "title": {
- "title": "Title",
- "description": "Title",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "status": {
- "title": "Status",
- "description": "Status",
- "type": "integer"
- },
- "detail": {
- "title": "Detail",
- "description": "Detail",
- "type": "string",
- "minLength": 1
- },
- "instance": {
- "title": "Instance",
- "description": "Instance",
- "type": "string",
- "minLength": 1,
- "x-nullable": true
- },
- "additional_details": {
- "description": "Any number of additional attributes, as defined in a specification or by an implementation.",
- "type": "array",
- "items": {
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "CreatePnfdInfoRequest": {
- "type": "object",
- "properties": {
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User-defined data for the PNF descriptor resource to be created.It shall be present when the user defined data is set for the individual PNF descriptor resource to be created.",
- "type": "object",
- "additionalProperties": {
- "description": "Key Value Pairs",
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "NsdmNotificationsFilter": {
- "title": "Filter",
- "description": "Filter settings for this subscription, to define the of all notifications this subscription relates to.",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["NsdOnBoardingNotification", "NsdOnboardingFailureNotification", "NsdChangeNotification", "NsdDeletionNotification", "PnfdOnBoardingNotification", "PnfdOnBoardingFailureNotification", "PnfdDeletionNotification"]
- }
- },
- "nsdInfoId": {
- "description": "Match NS packages with particular nsdInfoIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "nsdId": {
- "description": "Match NS Packages with particular nsdIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "nsdName": {
- "description": "Match NS Packages with particular nsdNames",
- "type": "array",
- "items": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "nsdVersion": {
- "description": "match NS packages that belong to certain nsdversion",
- "type": "array",
- "items": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "nsdInvariantId": {
- "description": "Match NS Packages with particular nsdInvariantIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "vnfPkgIds": {
- "description": "Match NS Packages that has VNF PackageIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "nestedNsdInfoIds": {
- "description": "Match NS Packages with particular nsdInvariantIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "nsdOnboardingState": {
- "description": "Match NS Packages with particular NS Onboarding State",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"]
- }
- },
- "nsdOperationalState": {
- "description": "Match NS Packages with particular NS Operational State",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["ENABLED", "DISABLED"]
- }
- },
- "nsdUsageState": {
- "description": "Match NS Packages with particular NS Usage State",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- }
- },
- "pnfdInfoIds": {
- "description": "Match PF packages with particular pnfdInfoIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "pnfdId": {
- "description": "Match PF packages with particular pnfdInfoIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "pnfdName": {
- "description": "Match PF Packages with particular pnfdNames",
- "type": "array",
- "items": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "pnfdVersion": {
- "description": "match PF packages that belong to certain pnfd version",
- "type": "array",
- "items": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "pnfdProvider": {
- "description": "Match PF Packages with particular pnfdProvider",
- "type": "array",
- "items": {
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- },
- "pnfdInvariantId": {
- "description": "Match PF Packages with particular pnfdInvariantIds",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "pnfdOnboardingState": {
- "description": "Match PF Packages with particular PNF Onboarding State ",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"]
- }
- },
- "pnfdUsageState": {
- "description": "Match PF Packages with particular PNF usage State",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- }
- }
- }
- },
- "NSDM_SUB_LinkSerializer": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "required": ["self"],
- "type": "object",
- "properties": {
- "self": {
- "$ref": "#/definitions/UriLink"
- }
- }
- },
- "NsdmSubscription": {
- "required": ["id", "callbackUri", "_links"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of this subscription resource.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "callbackUri": {
- "title": "Callbackuri",
- "description": "The URI of the endpoint to send the notification to.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "filter": {
- "$ref": "#/definitions/NsdmNotificationsFilter"
- },
- "_links": {
- "$ref": "#/definitions/NSDM_SUB_LinkSerializer"
- }
- }
- },
- "BasicAuth": {
- "title": "Paramsbasic",
- "description": "Parameters for authentication/authorization using BASIC.",
- "type": "object",
- "properties": {
- "userName": {
- "title": "Username",
- "description": "Username to be used in HTTP Basic authentication.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "password": {
- "title": "Password",
- "description": "Password to be used in HTTP Basic authentication.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- }
- },
- "OAuthCredentials": {
- "title": "Paramsoauth2clientcredentials",
- "description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.",
- "type": "object",
- "properties": {
- "clientId": {
- "title": "Clientid",
- "description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "clientPassword": {
- "title": "Clientpassword",
- "description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "tokenEndpoint": {
- "title": "Tokenendpoint",
- "description": "The token endpoint from which the access token can be obtained.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- }
- }
- },
- "SubscriptionAuthentication": {
- "title": "Authentication",
- "description": "Authentication parameters to configure the use of Authorization when sending notifications corresponding to this subscription.",
- "required": ["authType"],
- "type": "object",
- "properties": {
- "authType": {
- "description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification.",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["BASIC", "OAUTH2_CLIENT_CREDENTIALS", "TLS_CERT"]
- }
- },
- "paramsBasic": {
- "$ref": "#/definitions/BasicAuth"
- },
- "paramsOauth2ClientCredentials": {
- "$ref": "#/definitions/OAuthCredentials"
- }
- }
- },
- "NsdmSubscriptionRequest": {
- "required": ["callbackUri"],
- "type": "object",
- "properties": {
- "callbackUri": {
- "title": "Callbackuri",
- "description": "The URI of the endpoint to send the notification to.",
- "type": "string",
- "minLength": 1
- },
- "filter": {
- "$ref": "#/definitions/NsdmNotificationsFilter"
- },
- "authentication": {
- "$ref": "#/definitions/SubscriptionAuthentication"
- }
- }
- },
- "ParseModelRequest": {
- "required": ["csarId"],
- "type": "object",
- "properties": {
- "csarId": {
- "title": "Csarid",
- "description": "CSAR ID",
- "type": "string",
- "minLength": 1
- },
- "packageType": {
- "title": "Packagetype",
- "description": "Package type: VNF, PNF, NS, Service",
- "type": "string",
- "minLength": 1
- },
- "inputs": {
- "title": "Inputs",
- "description": "Inputs",
- "type": "object"
- }
- }
- },
- "ParseModelResponse": {
- "required": ["model"],
- "type": "object",
- "properties": {
- "model": {
- "title": "Model",
- "description": "Model",
- "type": "object"
- }
- }
- },
- "VNF_SUBSCRIPTION_LINKSERIALIZER": {
- "title": "Self",
- "description": "URI of this resource.",
- "required": ["href"],
- "type": "object",
- "properties": {
- "href": {
- "title": "Href",
- "description": "URI of the referenced resource.",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "LinkSelf": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "required": ["self"],
- "type": "object",
- "properties": {
- "self": {
- "$ref": "#/definitions/VNF_SUBSCRIPTION_LINKSERIALIZER"
- }
- }
- },
- "Version": {
- "required": ["vnfSoftwareVersion"],
- "type": "object",
- "properties": {
- "vnfSoftwareVersion": {
- "title": "Vnfsoftwareversion",
- "description": "VNF software version to match.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "vnfdVersions": {
- "description": "Match VNF packages that contain VNF products with certain VNFD versions",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- }
- }
- },
- "vnfProducts": {
- "required": ["vnfProductName"],
- "type": "object",
- "properties": {
- "vnfProductName": {
- "title": "Vnfproductname",
- "description": "Name of the VNF product to match.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "versions": {
- "description": "match VNF packages that contain VNF products with certain versions",
- "type": "array",
- "items": {
- "$ref": "#/definitions/Version"
- }
- }
- }
- },
- "vnfProductsProviders": {
- "required": ["vnfProvider"],
- "type": "object",
- "properties": {
- "vnfProvider": {
- "title": "Vnfprovider",
- "description": "Name of the VNFprovider to match.",
- "type": "string",
- "maxLength": 255,
- "minLength": 1
- },
- "vnfProducts": {
- "description": "match VNF packages that contain VNF products with certain product names, from one particular provider",
- "type": "array",
- "items": {
- "$ref": "#/definitions/vnfProducts"
- }
- }
- }
- },
- "PkgmNotificationsFilter": {
- "title": "Filter",
- "description": "Filter settings for this subscription, to define the subset of all notifications this subscription relates to",
- "type": "object",
- "properties": {
- "notificationTypes": {
- "description": "Match particular notification types",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["VnfPackageOnboardingNotification", "VnfPackageChangeNotification"]
- }
- },
- "vnfProductsFromProviders": {
- "description": "Match VNF packages that contain VNF products from certain providers.",
- "type": "array",
- "items": {
- "$ref": "#/definitions/vnfProductsProviders"
- }
- },
- "vnfdId": {
- "description": "Match VNF packages with a VNFD identifierlisted in the attribute",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "vnfPkgId": {
- "description": "Match VNF packages with a VNFD identifierlisted in the attribute",
- "type": "array",
- "items": {
- "type": "string",
- "minLength": 1
- }
- },
- "operationalState": {
- "description": "Operational state of the VNF package.",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["ENABLED", "DISABLED"]
- }
- },
- "usageState": {
- "description": "Operational state of the VNF package.",
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- }
- }
- }
- },
- "PkgmSubscription": {
- "required": ["id", "callbackUri", "_links"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of this subscription resource.",
- "type": "string",
- "minLength": 1
- },
- "callbackUri": {
- "title": "Callbackuri",
- "description": "The URI of the endpoint to send the notification to.",
- "type": "string",
- "format": "uri",
- "minLength": 1
- },
- "_links": {
- "$ref": "#/definitions/LinkSelf"
- },
- "filter": {
- "$ref": "#/definitions/PkgmNotificationsFilter"
- }
- }
- },
- "PkgmSubscriptionRequest": {
- "required": ["callbackUri"],
- "type": "object",
- "properties": {
- "filter": {
- "$ref": "#/definitions/PkgmNotificationsFilter"
- },
- "callbackUri": {
- "title": "Callbackuri",
- "description": "Callback URI to sendthe notification",
- "type": "string",
- "format": "uri",
- "minLength": 1
- },
- "authentication": {
- "$ref": "#/definitions/SubscriptionAuthentication"
- }
- }
- },
- "Checksum": {
- "title": "Checksum",
- "description": "Checksum of the on-boarded VNF package.",
- "required": ["algorithm", "hash"],
- "type": "object",
- "properties": {
- "algorithm": {
- "title": "Algorithm",
- "description": "Name of the algorithm used to generate the checksum.",
- "type": "string",
- "minLength": 1
- },
- "hash": {
- "title": "Hash",
- "description": "The hexadecimal value of the checksum.",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "VnfPackageSoftwareImageInfo": {
- "description": "Information about VNF package artifacts that are software images.",
- "required": ["id", "name", "provider", "version", "checksum", "containerFormat", "diskFormat", "createdAt", "minDisk", "minRam", "size", "imagePath"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of the software image.",
- "type": "string",
- "minLength": 1
- },
- "name": {
- "title": "Name",
- "description": "Name of the software image.",
- "type": "string",
- "minLength": 1
- },
- "provider": {
- "title": "Provider",
- "description": "Provider of the software image.",
- "type": "string",
- "minLength": 1
- },
- "version": {
- "title": "Version",
- "description": "Version of the software image.",
- "type": "string",
- "minLength": 1
- },
- "checksum": {
- "$ref": "#/definitions/Checksum"
- },
- "containerFormat": {
- "title": "Containerformat",
- "description": "terminationType: Indicates whether forceful or graceful termination is requested.",
- "type": "string",
- "enum": ["AKI", "AMI", "ARI", "BARE", "DOCKER", "OVA", "OVF"]
- },
- "diskFormat": {
- "title": "Diskformat",
- "description": "Disk format of a software image is the format of the underlying disk image.",
- "type": "string",
- "enum": ["AKI", "AMI", "ARI", "ISO", "QCOW2", "RAW", "VDI", "VHD", "VHDX", "VMDK"]
- },
- "createdAt": {
- "title": "Createdat",
- "description": "Time when this software image was created.",
- "type": "string",
- "format": "date-time"
- },
- "minDisk": {
- "title": "Mindisk",
- "description": "The minimal disk for this software image in bytes.",
- "type": "integer"
- },
- "minRam": {
- "title": "Minram",
- "description": "The minimal RAM for this software image in bytes.",
- "type": "integer"
- },
- "size": {
- "title": "Size",
- "description": "Size of this software image in bytes.",
- "type": "integer"
- },
- "userMetadata": {
- "title": "Usermetadata",
- "description": "User-defined data.",
- "type": "object",
- "additionalProperties": {
- "description": "KeyValue Pairs",
- "type": "string"
- },
- "x-nullable": true
- },
- "imagePath": {
- "title": "Imagepath",
- "description": "Path in the VNF package.",
- "type": "string",
- "minLength": 1
- }
- }
- },
- "VnfPackageArtifactInfo": {
- "description": "Information about VNF package artifacts contained in the VNF package that are not software images.",
- "required": ["artifactPath", "checksum"],
- "type": "object",
- "properties": {
- "artifactPath": {
- "title": "Artifactpath",
- "description": "Path in the VNF package.",
- "type": "string",
- "minLength": 1
- },
- "checksum": {
- "$ref": "#/definitions/Checksum"
- },
- "metadata": {
- "title": "Metadata",
- "description": "The metadata of the artifact that are available in the VNF package",
- "type": "object",
- "additionalProperties": {
- "description": "KeyValue Pairs",
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "VNF_PKGM_Link_Serializer": {
- "title": " links",
- "description": "Links to resources related to this resource.",
- "required": ["self", "packageContent"],
- "type": "object",
- "properties": {
- "self": {
- "$ref": "#/definitions/UriLink"
- },
- "vnfd": {
- "$ref": "#/definitions/UriLink"
- },
- "packageContent": {
- "$ref": "#/definitions/UriLink"
- }
- }
- },
- "VnfPkgInfo": {
- "required": ["id", "onboardingState", "operationalState", "usageState", "_links"],
- "type": "object",
- "properties": {
- "id": {
- "title": "Id",
- "description": "Identifier of the on-boarded VNF package.",
- "type": "string",
- "minLength": 1
- },
- "vnfdId": {
- "title": "Vnfdid",
- "description": "This identifier, which is managed by the VNF provider, identifies the VNF package and the VNFD in a globally unique way.",
- "type": "string",
- "x-nullable": true
- },
- "vnfProvider": {
- "title": "Vnfprovider",
- "description": "Provider of the VNF package and the VNFD.",
- "type": "string",
- "x-nullable": true
- },
- "vnfProductName": {
- "title": "Vnfproductname",
- "description": "Name to identify the VNF product.",
- "type": "string",
- "x-nullable": true
- },
- "vnfSoftwareVersion": {
- "title": "Vnfsoftwareversion",
- "description": "Software version of the VNF.",
- "type": "string",
- "x-nullable": true
- },
- "vnfdVersion": {
- "title": "Vnfdversion",
- "description": "The version of the VNvFD.",
- "type": "string",
- "x-nullable": true
- },
- "checksum": {
- "$ref": "#/definitions/Checksum"
- },
- "softwareImages": {
- "description": "Information about VNF package artifacts that are software images.",
- "type": "array",
- "items": {
- "$ref": "#/definitions/VnfPackageSoftwareImageInfo"
- },
- "x-nullable": true
- },
- "additionalArtifacts": {
- "description": "Information about VNF package artifacts contained in the VNF package that are not software images.",
- "type": "array",
- "items": {
- "$ref": "#/definitions/VnfPackageArtifactInfo"
- },
- "x-nullable": true
- },
- "onboardingState": {
- "title": "Onboardingstate",
- "description": "On-boarding state of the VNF package.",
- "type": "string",
- "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"]
- },
- "operationalState": {
- "title": "Operationalstate",
- "description": "Operational state of the VNF package.",
- "type": "string",
- "enum": ["ENABLED", "DISABLED"]
- },
- "usageState": {
- "title": "Usagestate",
- "description": "Usage state of the VNF package.",
- "type": "string",
- "enum": ["IN_USE", "NOT_IN_USE"]
- },
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User defined data for the VNF package.",
- "type": "object",
- "additionalProperties": {
- "description": "KeyValue Pairs",
- "type": "string"
- },
- "x-nullable": true
- },
- "_links": {
- "$ref": "#/definitions/VNF_PKGM_Link_Serializer"
- }
- }
- },
- "CreateVnfPkgInfoRequest": {
- "type": "object",
- "properties": {
- "userDefinedData": {
- "title": "Userdefineddata",
- "description": "User defined data for the VNF package.",
- "type": "object",
- "additionalProperties": {
- "description": "KeyValue Pairs",
- "type": "string"
- },
- "x-nullable": true
- }
- }
- },
- "UploadVnfPackageFromUriRequest": {
- "required": ["addressInformation"],
- "type": "object",
- "properties": {
- "addressInformation": {
- "title": "Addressinformation",
- "description": "Address information of the VNF package content.",
- "type": "string",
- "minLength": 1
- },
- "userName": {
- "title": "Username",
- "description": "User name to be used for authentication.",
- "type": "string",
- "minLength": 1
- },
- "password": {
- "title": "Password",
- "description": "Password to be used for authentication.",
- "type": "string",
- "minLength": 1
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json
deleted file mode 100644
index 32e002f0e7..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/etsi-sol003-pkgm-ext-clients/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json
+++ /dev/null
@@ -1,1778 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "version": "1.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1",
- "title": "SOL003 - VNF Package Management Notification interface",
- "description": "SOL003 - VNF Package Management Notification interface\n\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence.\n\nIn clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based filtering mechanism is defined. This mechanism is currently not included in the corresponding OpenAPI design for this GS version. Changes to the attribute-based filtering mechanism are being considered in v2.5.1 of this GS for inclusion in the corresponding future ETSI NFV OpenAPI design.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=\n",
- "license": {
- "name": "ETSI Forge copyright notice",
- "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- }
- },
- "externalDocs": {
- "description": "ETSI GS NFV-SOL 003 V2.5.1",
- "url": "https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.05.01_60/gs_nfv-sol003v020501p.pdf"
- },
- "basePath": "/callback/v1",
- "schemes": ["https"],
- "consumes": ["application/json"],
- "produces": ["application/json"],
- "paths": {
- "/URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageOnboardingNotification": {
- "post": {
- "description": "Notify\n\nThe POST method delivers a notification from the server to the client.\n",
- "parameters": [{
- "name": "VnfPackageOnboardingNotification",
- "description": "A notification about on-boarding of a VNF package.",
- "in": "body",
- "required": true,
- "schema": {
- "description": "This type represents a VNF package management notification, which informs the receiver that the onboarding process of a VNF package is complete and the package is ready for use. The notification shall be triggered by the NFVO when the \"onboardingState\" attribute of a new VNF package has changed to \"ONBOARDED\".\n",
- "type": "object",
- "required": ["id", "notificationType", "subscriptionId", "timeStamp", "vnfPkgId", "vnfdId", "_links"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "notificationType": {
- "description": "Discriminator for the different notification types. Shall be set to \"VnfPackageOnboardingNotification\" for this notification type.\n",
- "type": "string",
- "enum": ["VnfPackageOnboardingNotification"]
- },
- "subscriptionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "timeStamp": {
- "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
- "type": "string",
- "format": "date-time"
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "_links": {
- "description": "This type represents the links to resources that a VNF package management notification can contain.\n",
- "type": "object",
- "required": ["vnfPackage", "subscription"],
- "properties": {
- "vnfPackage": {
- "description": "This type represents a link to a resource in a notification, using an absolute or relative URI. It shall comply with the provisions defined in table 4.4.1.3a-1.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "subscription": {
- "description": "This type represents a link to a resource in a notification, using an absolute or relative URI. It shall comply with the provisions defined in table 4.4.1.3a-1.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }],
- "responses": {
- "204": {
- "description": "204 NO CONTENT\nThe notification was delivered successfully.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "get": {
- "description": "The GET method allows the server to test the notification endpoint that is provided by the client, e.g. during subscription.\n",
- "parameters": [{
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }],
- "responses": {
- "204": {
- "description": "204 NO CONTENT\nThe notification endpoint was tested successfully. The response body shall be empty.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- },
- "/URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageChangeNotification": {
- "post": {
- "description": "Notify\n\nThe POST method delivers a notification from the server to the client.\n",
- "parameters": [{
- "name": "VnfPackageChangeNotification",
- "description": "A notification about changes of status in a VNF package.\n",
- "in": "body",
- "required": true,
- "schema": {
- "description": "This type represents a VNF package management notification, which informs the receiver of a change of the status in an on-boarded VNF package. Only changes in the \"operationalState\" attribute of an on-boarded VNF package and the deletion NF package will be reported. Changes in the \"usageState\" and \"onboardingState\" attributes are not reported. The notification shall be triggered by the NFVO when there is a change in the status of an onboarded VNF package, as follows: * The \"operationalState\" attribute of a VNF package has changed, and the \"onboardingState\" attribute of the package has the value \"ONBOARDED\"\n (i.e. the package has been onboarded previously).\n* The on-boarded VNF package has been deleted.\n",
- "type": "object",
- "required": ["id", "notificationType", "subscriptionId", "timeStamp", "vnfPkgId", "vnfdId", "changeType", "_links"],
- "properties": {
- "id": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "notificationType": {
- "description": "Discriminator for the different notification types. Shall be set to \"VnfPackageChangeNotification\" for this notification type.\n",
- "type": "string",
- "enum": ["VnfPackageChangeNotification"]
- },
- "subscriptionId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "timeStamp": {
- "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
- "type": "string",
- "format": "date-time"
- },
- "vnfPkgId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "vnfdId": {
- "description": "An identifier with the intention of being globally unique.\n",
- "type": "string"
- },
- "changeType": {
- "description": "- OP_STATE_CHANGE: The \"operationalState\" attribute has been changed. - PKG_DELETE: The VNF package has been deleted.\n",
- "type": "string",
- "enum": ["OP_STATE_CHANGE", "PKG_DELETE"]
- },
- "operationalState": {
- "description": "- ENABLED: The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances.\n- DISABLED: The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package\n is re-enabled).\n",
- "type": "string",
- "enum": ["ENABLED", "DISABLED"]
- },
- "_links": {
- "description": "This type represents the links to resources that a VNF package management notification can contain.\n",
- "type": "object",
- "required": ["vnfPackage", "subscription"],
- "properties": {
- "vnfPackage": {
- "description": "This type represents a link to a resource in a notification, using an absolute or relative URI. It shall comply with the provisions defined in table 4.4.1.3a-1.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- },
- "subscription": {
- "description": "This type represents a link to a resource in a notification, using an absolute or relative URI. It shall comply with the provisions defined in table 4.4.1.3a-1.\n",
- "type": "object",
- "required": ["href"],
- "properties": {
- "href": {
- "description": "String formatted according to IETF RFC 3986.\n",
- "type": "string"
- }
- }
- }
- }
- }
- }
- }
- }, {
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Content-Type",
- "description": "The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in": "header",
- "required": true,
- "type": "string"
- }, {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }],
- "responses": {
- "204": {
- "description": "204 NO CONTENT\nThe notification was delivered successfully.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- },
- "get": {
- "description": "The GET method allows the server to test the notification endpoint that is provided by the client, e.g. during subscription.\n",
- "parameters": [{
- "name": "Authorization",
- "description": "The authorization token for the request. Reference: IETF RFC 7235\n",
- "in": "header",
- "required": false,
- "type": "string"
- }, {
- "name": "Version",
- "description": "Version of the API requested to use when responding to this request.\n",
- "in": "header",
- "required": true,
- "type": "string"
- }],
- "responses": {
- "204": {
- "description": "204 NO CONTENT\nThe notification endpoint was tested successfully. The response body shall be empty.\n",
- "headers": {
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- }
- },
- "400": {
- "description": "400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "401": {
- "description": "401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "403": {
- "description": "403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "404": {
- "description": "404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "406": {
- "description": "406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "500": {
- "description": "500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- },
- "503": {
- "description": "503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers": {
- "Content-Type": {
- "description": "The MIME type of the body of the response.",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- },
- "WWW-Authenticate": {
- "description": "Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 0
- },
- "Version": {
- "description": "Version of the API used in the response.\n",
- "type": "string",
- "maximum": 1,
- "minimum": 1
- }
- },
- "schema": {
- "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type": "object",
- "required": ["status", "detail"],
- "properties": {
- "type": {
- "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type": "string",
- "format": "URI"
- },
- "title": {
- "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type": "string"
- },
- "status": {
- "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type": "integer"
- },
- "detail": {
- "description": "A human-readable explanation specific to this occurrence of the problem.\n",
- "type": "string"
- },
- "instance": {
- "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type": "string",
- "format": "URI"
- }
- }
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/pom.xml b/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/pom.xml
deleted file mode 100644
index 37f9e2efee..0000000000
--- a/adapters/etsi-sol003-adapter/etsi-sol003-pkgm/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>etsi-sol003-pkgm</artifactId>
- <name>ETSI SOL003 VNF Package Management</name>
- <packaging>pom</packaging>
- <modules>
- <module>etsi-sol003-pkgm-api</module>
- <module>etsi-sol003-pkgm-ext-clients</module>
- <module>etsi-sol003-pkgm-adapter</module>
- </modules>
-</project> \ No newline at end of file
diff --git a/adapters/etsi-sol003-adapter/pom.xml b/adapters/etsi-sol003-adapter/pom.xml
deleted file mode 100644
index ceaaab42d0..0000000000
--- a/adapters/etsi-sol003-adapter/pom.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter</artifactId>
- <name>ETSI SOL003 Adapter</name>
- <packaging>pom</packaging>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <version-swagger-codegen>2.3.1</version-swagger-codegen>
- <gson-fire-version>1.8.2</gson-fire-version>
- <retrofit-version>2.7.2</retrofit-version>
- <threetenbp-version>1.3.5</threetenbp-version>
- <oltu-version>1.0.1</oltu-version>
- <swagger-core-version>1.5.21</swagger-core-version>
- <okhttp3-version>3.14.0</okhttp3-version>
- <okhttp-version>2.7.5</okhttp-version>
- <okio-version>1.13.0</okio-version>
- <spring-security-oauth2-version>2.3.6.RELEASE</spring-security-oauth2-version>
- </properties>
-
- <modules>
- <module>etsi-sol003-adapter-common</module>
- <module>etsi-sol003-pkgm</module>
- <module>etsi-sol003-lcm</module>
- <module>etsi-sol003-adapter-application</module>
- </modules>
-</project>
diff --git a/adapters/mso-adapter-utils/pom.xml b/adapters/mso-adapter-utils/pom.xml
index 6c9c23a59b..3057b47ebd 100644
--- a/adapters/mso-adapter-utils/pom.xml
+++ b/adapters/mso-adapter-utils/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so.adapters</groupId>
<artifactId>mso-adapter-utils</artifactId>
@@ -84,7 +84,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
index 1df5fe36ab..be42ff10bb 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
@@ -212,7 +212,7 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin {
if (response.hasEntity()) {
multicloudResponseBody = getCreateBody((java.io.InputStream) response.getEntity());
}
- if (response.getStatus() == Response.Status.CREATED.getStatusCode() && response.hasEntity()) {
+ if (response.getStatus() == Response.Status.CREATED.getStatusCode() && multicloudResponseBody != null) {
String canonicalName = stackName + "/";
if (multicloudResponseBody != null) {
canonicalName = canonicalName + multicloudResponseBody.getWorkloadId();
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
index f20f6f1448..5ee4987e38 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
@@ -439,6 +439,7 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
String requestId = getRequestId();
doReturn(heatClient).when(heatUtils).getHeatClient(cloudSiteId, tenantId);
+ doNothing().when(heatUtils).saveStackRequest(eq(createStackParam), isNull(), eq("stackName"));
doReturn(stackResource).when(heatClient).getStacks();
doReturn(mockCreateStack).when(stackResource).create(createStackParam);
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
index acd42dd8da..c6111a16cb 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsWithUpdateTest.java
@@ -95,7 +95,6 @@ public class MsoHeatUtilsWithUpdateTest extends TestDataSetup {
StackInfo expectedStackInfo = new StackInfo("stackName", HeatStatus.UPDATED, "stackStatusReason", null);
expectedStackInfo.setCanonicalName("stackName/id");
- doReturn(Optional.of(cloudSite)).when(cloudConfig).getCloudSite(isA(String.class));
doReturn(heatClient).when(heatUtils).getHeatClient(isA(String.class), isA(String.class));
doReturn(null).when(heatUtils).executeAndRecordOpenstackRequest(isA(OpenStackRequest.class));
doReturn("0").when(environment).getProperty(isA(String.class), isA(String.class));
@@ -120,7 +119,6 @@ public class MsoHeatUtilsWithUpdateTest extends TestDataSetup {
StackInfo expectedStackInfo = new StackInfo("stackName", HeatStatus.UPDATED, "stackStatusReason", null);
expectedStackInfo.setCanonicalName("stackName/id");
- doReturn(Optional.of(cloudSite)).when(cloudConfig).getCloudSite(isA(String.class));
doReturn(heatClient).when(heatUtils).getHeatClient(isA(String.class), isA(String.class));
doReturn(null).when(heatUtils).executeAndRecordOpenstackRequest(isA(OpenStackRequest.class));
@@ -147,7 +145,6 @@ public class MsoHeatUtilsWithUpdateTest extends TestDataSetup {
StackInfo expectedStackInfo = new StackInfo("stackName", HeatStatus.UPDATED, "stackStatusReason", null);
expectedStackInfo.setCanonicalName("stackName/id");
- doReturn(Optional.of(cloudSite)).when(cloudConfig).getCloudSite(isA(String.class));
doReturn(heatClient).when(heatUtils).getHeatClient(isA(String.class), isA(String.class));
doReturn(null).when(heatUtils).executeAndRecordOpenstackRequest(isA(OpenStackRequest.class));
doReturn("0").when(environment).getProperty(isA(String.class), isA(String.class));
diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
index 44a9bc3e10..7adfe091d3 100644
--- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
+++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoMulticloudUtilsTest.java
@@ -181,12 +181,12 @@ public class MsoMulticloudUtilsTest extends BaseTest {
@Test
public void createStackEmptyResponseEntity() throws MsoException {
- wireMockServer.stubFor(post(urlPathEqualTo(MULTICLOUD_CREATE_PATH)).willReturn(
- aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_CREATED)));
+ wireMockServer.stubFor(post(urlPathEqualTo(MULTICLOUD_CREATE_PATH)).willReturn(aResponse()
+ .withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_CREATED).withBody("{}")));
StackInfo result = multicloudUtils.createStack("MTN14", "CloudOwner", "TEST-tenant", "TEST-stack",
new VduModelInfo(), "TEST-heat", new HashMap<>(), false, 200, "TEST-env", new HashMap<>(),
new HashMap<>(), false, false);
assertNotNull(result);
- assertEquals("TEST-stack/", result.getName());
+ assertEquals("TEST-stack", result.getName());
}
}
diff --git a/adapters/mso-adapters-rest-interface/pom.xml b/adapters/mso-adapters-rest-interface/pom.xml
index 9e86f41af3..015efd2c4b 100644
--- a/adapters/mso-adapters-rest-interface/pom.xml
+++ b/adapters/mso-adapters-rest-interface/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so.adapters</groupId>
<artifactId>mso-adapters-rest-interface</artifactId>
diff --git a/adapters/mso-catalog-db-adapter/pom.xml b/adapters/mso-catalog-db-adapter/pom.xml
index 9b51e35c57..7ba222a86a 100644
--- a/adapters/mso-catalog-db-adapter/pom.xml
+++ b/adapters/mso-catalog-db-adapter/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so.adapters</groupId>
@@ -185,7 +185,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java b/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java
index 691ae60afd..86cfa6ee0c 100644
--- a/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java
+++ b/adapters/mso-catalog-db-adapter/src/main/java/db/migration/R__CloudConfigMigration.java
@@ -22,19 +22,6 @@
package db.migration;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
-import org.flywaydb.core.api.MigrationVersion;
-import org.flywaydb.core.api.migration.MigrationChecksumProvider;
-import org.flywaydb.core.api.migration.MigrationInfoProvider;
-import org.flywaydb.core.api.migration.jdbc.JdbcMigration;
-import org.onap.so.db.catalog.beans.CloudIdentity;
-import org.onap.so.db.catalog.beans.CloudSite;
-import org.onap.so.db.catalog.beans.CloudifyManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -45,13 +32,24 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
+import org.flywaydb.core.api.MigrationVersion;
+import org.flywaydb.core.api.migration.BaseJavaMigration;
+import org.onap.so.db.catalog.beans.CloudIdentity;
+import org.onap.so.db.catalog.beans.CloudSite;
+import org.onap.so.db.catalog.beans.CloudifyManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
/**
* Performs migration using JDBC Connection from the cloud config provided in the environment
* (application-{profile}.yaml) and persist data (when not already present) to the catalod database.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
-public class R__CloudConfigMigration implements JdbcMigration, MigrationInfoProvider, MigrationChecksumProvider {
+public class R__CloudConfigMigration extends BaseJavaMigration {
public static final String FLYWAY = "FLYWAY";
private static final Logger logger = LoggerFactory.getLogger(R__CloudConfigMigration.class);
@@ -63,7 +61,6 @@ public class R__CloudConfigMigration implements JdbcMigration, MigrationInfoProv
return false;
}
- @Override
public void migrate(Connection connection) throws Exception {
logger.debug("Starting migration for CloudConfig");
@@ -238,5 +235,11 @@ public class R__CloudConfigMigration implements JdbcMigration, MigrationInfoProv
public Integer getChecksum() {
return Math.toIntExact(System.currentTimeMillis() / 1000);
}
+
+ @Override
+ public void migrate(org.flywaydb.core.api.migration.Context context) throws Exception {
+ migrate(context.getConnection());
+
+ }
}
diff --git a/adapters/mso-cnf-adapter/pom.xml b/adapters/mso-cnf-adapter/pom.xml
deleted file mode 100644
index 8cfb2dc581..0000000000
--- a/adapters/mso-cnf-adapter/pom.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<!--
- ~*
- ~============LICENSE_START=======================================================
- ~* ONAP - SO
- ~*================================================================================
- ~* Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- ~*================================================================================
- ~* Licensed under the Apache License, Version 2.0 (the "License");
- ~* you may not use this file except in compliance with the License.
- ~* You may obtain a copy of the License at
- ~*
- ~* http://www.apache.org/licenses/LICENSE-2.0
- ~*
- ~* Unless required by applicable law or agreed to in writing, software
- ~* distributed under the License is distributed on an "AS IS" BASIS,
- ~* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~* See the License for the specific language governing permissions and
- ~* limitations under the License.
- ~* ============LICENSE_END=========================================================
- ~*/
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-cnf-adapter</artifactId>
- <packaging>jar</packaging>
- <name>mso-cnf-adapter</name>
- <description>Web service endpoint for cnf operations</description>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.adapters.cnf.MSOCnfApplication</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- </dependency>
- <!-- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
- <version>${cxf.version}</version>
- </dependency> -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <!-- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db-repositories</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.vorburger.mariaDB4j</groupId>
- <artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>3.14.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.2</version>
- </dependency> -->
- </dependencies>
-</project>
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/MSOCnfApplication.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/MSOCnfApplication.java
deleted file mode 100644
index 0ba40e2700..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/MSOCnfApplication.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
-import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
-import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-@SpringBootApplication
-@ComponentScan(basePackages = {"org.onap.so.adapters.cnf"})
-@EnableAutoConfiguration(exclude = {LiquibaseAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
- DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class,
- SecurityAutoConfiguration.class})
-@Configuration
-public class MSOCnfApplication {
-
- public static void main(String... args) {
- SpringApplication.run(MSOCnfApplication.class, args);
- }
-
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate();
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/WebSecurityConfig.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/WebSecurityConfig.java
deleted file mode 100644
index 03bfd54eef..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/WebSecurityConfig.java
+++ /dev/null
@@ -1,35 +0,0 @@
-
-package org.onap.so.adapters.cnf;
-/*
- * ============LICENSE_START==================================================== === ONAP - SO
- * ============================================================================= === Copyright (C) 2020 Huawei
- * Technologies Co., Ltd. All rights reserved.
- * ============================================================================= === Licensed under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- * ============LICENSE_END====================================================== ===
- *
- */
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@EnableWebSecurity
-
-@Configuration
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.csrf().disable();
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/exceptions/ApplicationException.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/exceptions/ApplicationException.java
deleted file mode 100644
index c950cf6b2a..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/exceptions/ApplicationException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.exceptions;
-
-import static org.onap.so.adapters.cnf.util.CNfAdapterUtil.marshal;
-import org.onap.so.adapters.cnf.model.ErrorResponse;
-import org.springframework.http.ResponseEntity;
-
-public class ApplicationException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- private int errorCode;
-
- private String errorMsg;
-
- public ApplicationException(int errorCode, String errorMsg) {
- this.errorCode = errorCode;
- this.errorMsg = errorMsg;
- }
-
- public int getErrorCode() {
- return errorCode;
- }
-
- public void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public String getErrorMsg() {
- return errorMsg;
- }
-
- public void setErrorMsg(String errorMsg) {
- this.errorMsg = errorMsg;
- }
-
- public ResponseEntity buildErrorResponse() {
- String message;
- try {
- ErrorResponse err = new ErrorResponse(errorCode, errorMsg);
- message = marshal(err);
- } catch (ApplicationException e) {
- return ResponseEntity.status(500).body("Internal Server Error");
- }
- return ResponseEntity.status(errorCode).body(message);
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/BpmnInstanceRequest.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/BpmnInstanceRequest.java
deleted file mode 100644
index 2e76d51da2..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/BpmnInstanceRequest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class BpmnInstanceRequest {
-
- @JsonProperty(value = "modelInvariantId")
- private String modelInvariantId;
-
- @JsonProperty(value = "modelVersionId")
- private String modelVersionId;
-
- @JsonProperty(value = "k8sRBProfileName")
- private String k8sRBProfileName;
-
- @JsonProperty(value = "cloudRegionId")
- private String cloudRegionId;
-
- @JsonProperty(value = "vfModuleUUID")
- private String vfModuleUUID;
-
- @JsonProperty(value = "labels")
- private Map<String, String> labels;
-
- @JsonProperty(value = "overrideValues")
- private Map<String, String> overrideValues;
-
- public String getModelInvariantId() {
- return modelInvariantId;
- }
-
- public void setModelInvariantId(String modelInvariantId) {
- this.modelInvariantId = modelInvariantId;
- }
-
- public String getModelVersionId() {
- return modelVersionId;
- }
-
- public void setModelVersionId(String modelVersionId) {
- this.modelVersionId = modelVersionId;
- }
-
- public String getK8sRBProfileName() {
- return k8sRBProfileName;
- }
-
- public void setK8sRBProfileName(String k8sRBProfileName) {
- this.k8sRBProfileName = k8sRBProfileName;
- }
-
- public String getCloudRegionId() {
- return cloudRegionId;
- }
-
- public void setCloudRegionId(String cloudRegionId) {
- this.cloudRegionId = cloudRegionId;
- }
-
- public String getVfModuleUUID() {
- return vfModuleUUID;
- }
-
- public void setVfModuleUUID(String vfModuleUUID) {
- this.vfModuleUUID = vfModuleUUID;
- }
-
- public Map<String, String> getLabels() {
- return labels;
- }
-
- public void setLabels(Map<String, String> labels) {
- this.labels = labels;
- }
-
- public Map<String, String> getOverrideValues() {
- return overrideValues;
- }
-
- public void setOverrideValues(Map<String, String> overrideValues) {
- this.overrideValues = overrideValues;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Config.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Config.java
deleted file mode 100644
index b901a39706..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Config.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class Config {
-
- @JsonProperty(value = "config-version")
- private String configVersion;
-
- @JsonProperty(value = "config-tag")
- private String configTag;
-
- public Object getConfigVersion() {
- return configVersion;
- }
-
- public void setConfigVersion(String configVersion) {
- this.configVersion = configVersion;
- }
-
- public Object getConfigTag() {
- return configTag;
- }
-
- public void setConfigTag(String configTag) {
- this.configTag = configTag;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigTemplateEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigTemplateEntity.java
deleted file mode 100644
index 2ed35b865f..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigTemplateEntity.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ConfigTemplateEntity {
-
- @JsonProperty(value = "template-name")
- private String templateName;
-
- @JsonProperty(value = "description")
- private String description;
-
- @JsonProperty(value = "chart-name")
- private String chartName;
-
- public String getTemplateName() {
- return templateName;
- }
-
- public void setTemplateName(String templateName) {
- this.templateName = templateName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getChartName() {
- return chartName;
- }
-
- public void setChartName(String chartName) {
- this.chartName = chartName;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationEntity.java
deleted file mode 100644
index 7f6ae865e2..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationEntity.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ConfigurationEntity {
-
- @JsonProperty(value = "template-name")
- private String templateName;
-
- @JsonProperty(value = "config-name")
- private String configName;
-
- @JsonProperty(value = "description")
- private String description;
-
- @JsonProperty(value = "values")
- private Map<String, Object> values;
-
- public String getTemplateName() {
- return templateName;
- }
-
- public void setTemplateName(String templateName) {
- this.templateName = templateName;
- }
-
- public String getConfigName() {
- return configName;
- }
-
- public void setConfigName(String configName) {
- this.configName = configName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Map<String, Object> getValues() {
- return values;
- }
-
- public void setValues(Map<String, Object> values) {
- this.values = values;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationRollbackEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationRollbackEntity.java
deleted file mode 100644
index bf78d9c049..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConfigurationRollbackEntity.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.List;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ConfigurationRollbackEntity {
-
- // TODO
- @JsonProperty(value = "anyOf")
- private List<Config> anyOf;
-
- public List<Config> getAnyOf() {
- return anyOf;
- }
-
- public void setAnyOf(List<Config> anyOf) {
- this.anyOf = anyOf;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityInfo.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityInfo.java
deleted file mode 100644
index a2554d1618..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityInfo.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ConnectivityInfo {
-
- @JsonProperty(value = "cloud-region")
- private String cloudRegion;
-
- @JsonProperty(value = "cloud-owner")
- private String cloudOwner;
-
- @JsonProperty(value = "kubeconfig")
- private String kubeconfig;
-
- @JsonProperty(value = "other-connectivity-list")
- private OtherConnectivityListEntity otherConnectivityListEntity;
-
- public String getCloudRegion() {
- return cloudRegion;
- }
-
- public void setCloudRegion(String cloudRegion) {
- this.cloudRegion = cloudRegion;
- }
-
- public String getCloudOwner() {
- return cloudOwner;
- }
-
- public void setCloudOwner(String cloudOwner) {
- this.cloudOwner = cloudOwner;
- }
-
- public OtherConnectivityListEntity getOtherConnectivityListEntity() {
- return otherConnectivityListEntity;
- }
-
- public void setOtherConnectivityListEntity(OtherConnectivityListEntity otherConnectivityListEntity) {
- this.otherConnectivityListEntity = otherConnectivityListEntity;
- }
-
- public String getKubeconfig() {
- return kubeconfig;
- }
-
- public void setKubeconfig(String kubeconfig) {
- this.kubeconfig = kubeconfig;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityRecords.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityRecords.java
deleted file mode 100644
index 06cfdf1602..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ConnectivityRecords.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.Map;
-
-public class ConnectivityRecords {
-
- /*
- * private String connectivityRecordName; private String fQDNOrIP; private String caCertToVerifyServer; private
- * String sslInitiator; private String userName; private String password; private String privateKey; private String
- * certToPresent;
- */
-
- private Map<String, String> records;
-
- public Map<String, String> getRecords() {
- return records;
- }
-
- public void setRecords(Map<String, String> records) {
- this.records = records;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ErrorResponse.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ErrorResponse.java
deleted file mode 100644
index 135adcc143..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ErrorResponse.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.model;
-
-public class ErrorResponse {
-
- private int status;
-
- private String error;
-
- private String message;
-
- public ErrorResponse(int status, String message) {
- this.status = status;
- this.message = message;
- this.error = "Bad Request";
- }
-
- public int getStatus() {
- return status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public String getError() {
- if (status == 500) {
- this.error = "Internal Server Error";
- }
- return error;
- }
-
- public void setError(String error) {
- this.error = error;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/GroupVersionKind.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/GroupVersionKind.java
deleted file mode 100644
index bfa5505ccc..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/GroupVersionKind.java
+++ /dev/null
@@ -1,66 +0,0 @@
-
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonPropertyOrder({"Group", "Version", "Kind"})
-public class GroupVersionKind {
- @JsonProperty("Group")
- private String group;
- @JsonProperty("Version")
- private String version;
- @JsonProperty("Kind")
- private String kind;
-
- @JsonProperty("Group")
- public String getGroup() {
- return group;
- }
-
- @JsonProperty("Group")
- public void setGroup(String group) {
- this.group = group;
- }
-
- @JsonProperty("Version")
- public String getVersion() {
- return version;
- }
-
- @JsonProperty("Version")
- public void setVersion(String version) {
- this.version = version;
- }
-
- @JsonProperty("Kind")
- public String getKind() {
- return kind;
- }
-
- @JsonProperty("Kind")
- public void setKind(String kind) {
- this.kind = kind;
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponse.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponse.java
deleted file mode 100644
index 58040826dd..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponse.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(value = "true")
-public class InstanceMiniResponse extends Response {
-
- private String id;
- private MulticloudInstanceRequest request;
- private String nameSpace;
-
- public InstanceMiniResponse(String errorMsg) {
- super(errorMsg);
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public MulticloudInstanceRequest getRequest() {
- return request;
- }
-
- public void setRequest(MulticloudInstanceRequest request) {
- this.request = request;
- }
-
- public String getNameSpace() {
- return nameSpace;
- }
-
- public void setNameSpace(String nameSpace) {
- this.nameSpace = nameSpace;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponseList.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponseList.java
deleted file mode 100644
index ad70fbb7d0..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceMiniResponseList.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.model;
-
-import java.util.List;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(value = "true")
-public class InstanceMiniResponseList extends Response {
-
- public InstanceMiniResponseList(String errorMsg) {
- super(errorMsg);
- }
-
- private List<InstanceMiniResponse> instancList;
-
- public List<InstanceMiniResponse> getInstancList() {
- return instancList;
- }
-
- public void setInstancList(List<InstanceMiniResponse> instancList) {
- this.instancList = instancList;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceResponse.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceResponse.java
deleted file mode 100644
index ae63f86c8a..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceResponse.java
+++ /dev/null
@@ -1,99 +0,0 @@
-
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.cnf.model;
-
-import java.util.List;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonPropertyOrder({"id", "request", "namespace", "release-name", "resources"})
-@JsonIgnoreProperties(value = "true")
-public class InstanceResponse {
-
- @JsonProperty("id")
- private String id;
-
- @JsonProperty("request")
- private MulticloudInstanceRequest request;
-
- @JsonProperty("namespace")
- private String namespace;
-
- @JsonProperty("release-name")
- private String releaseName;
-
- @JsonProperty("resources")
- private List<Resource> resources;
-
- @JsonProperty("id")
- public String getId() {
- return id;
- }
-
- @JsonProperty("id")
- public void setId(String id) {
- this.id = id;
- }
-
- @JsonProperty("request")
- public MulticloudInstanceRequest getRequest() {
- return request;
- }
-
- @JsonProperty("request")
- public void setRequest(MulticloudInstanceRequest request) {
- this.request = request;
- }
-
- @JsonProperty("namespace")
- public String getNamespace() {
- return namespace;
- }
-
- @JsonProperty("namespace")
- public void setNamespace(String namespace) {
- this.namespace = namespace;
- }
-
- @JsonProperty("resources")
- public List<Resource> getResources() {
- return resources;
- }
-
- @JsonProperty("resources")
- public void setResources(List<Resource> resources) {
- this.resources = resources;
- }
-
- @JsonProperty("release-name")
- public String getReleaseName() {
- return releaseName;
- }
-
- @JsonProperty("release-name")
- public void setReleaseName(String releaseName) {
- this.releaseName = releaseName;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceStatusResponse.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceStatusResponse.java
deleted file mode 100644
index 2472684bc0..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/InstanceStatusResponse.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.cnf.model;
-
-import java.util.List;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonIgnoreProperties(value = "true")
-public class InstanceStatusResponse extends Response {
-
- public InstanceStatusResponse(String errorMsg) {
- super(errorMsg);
- }
-
- private MulticloudInstanceRequest request;
-
- private boolean ready;
-
- private String resourceCount;
-
- private List<PodStatus> podStatuses;
-
- private List<?> servicesStatuses;
-
- public MulticloudInstanceRequest getRequest() {
- return request;
- }
-
- public void setRequest(MulticloudInstanceRequest request) {
- this.request = request;
- }
-
- public boolean isReady() {
- return ready;
- }
-
- public void setReady(boolean ready) {
- this.ready = ready;
- }
-
- public String getResourceCount() {
- return resourceCount;
- }
-
- public void setResourceCount(String resourceCount) {
- this.resourceCount = resourceCount;
- }
-
- public List<PodStatus> getPodStatuses() {
- return podStatuses;
- }
-
- public void setPodStatuses(List<PodStatus> podStatuses) {
- this.podStatuses = podStatuses;
- }
-
- public List<?> getServicesStatuses() {
- return servicesStatuses;
- }
-
- public void setServicesStatuses(List<?> servicesStatuses) {
- this.servicesStatuses = servicesStatuses;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/MulticloudInstanceRequest.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/MulticloudInstanceRequest.java
deleted file mode 100644
index b1719cbd7d..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/MulticloudInstanceRequest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class MulticloudInstanceRequest {
-
- @JsonProperty(value = "cloud-region")
- private String cloudRegion;
-
- @JsonProperty(value = "rb-name")
- private String rbName;
-
- @JsonProperty(value = "rb-version")
- private String rbVersion;
-
- @JsonProperty(value = "profile-name")
- private String profileName;
-
- @JsonProperty(value = "labels")
- private Map<String, String> labels;
-
- @JsonProperty(value = "override-values")
- private Map<String, String> overrideValues;
-
- @JsonProperty(value = "release-name")
- private String vfModuleUuid;
-
- public String getCloudRegion() {
- return cloudRegion;
- }
-
- public void setCloudRegion(String cloudRegion) {
- this.cloudRegion = cloudRegion;
- }
-
- public String getRbName() {
- return rbName;
- }
-
- public void setRbName(String rbName) {
- this.rbName = rbName;
- }
-
- public String getRbVersion() {
- return rbVersion;
- }
-
- public void setRbVersion(String rbVersion) {
- this.rbVersion = rbVersion;
- }
-
- public String getProfileName() {
- return profileName;
- }
-
- public void setProfileName(String profileName) {
- this.profileName = profileName;
- }
-
- public Map<String, String> getLabels() {
- return labels;
- }
-
- public void setLabels(Map<String, String> labels) {
- this.labels = labels;
- }
-
- public Map<String, String> getOverrideValues() {
- return overrideValues;
- }
-
- public void setOverrideValues(Map<String, String> overrideValues) {
- this.overrideValues = overrideValues;
- }
-
- public String getVfModuleUuid() {
- return vfModuleUuid;
- }
-
- public void setVfModuleUuid(String vfModuleUuid) {
- this.vfModuleUuid = vfModuleUuid;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/OtherConnectivityListEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/OtherConnectivityListEntity.java
deleted file mode 100644
index dd10252a0b..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/OtherConnectivityListEntity.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.List;
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class OtherConnectivityListEntity {
-
- @JsonProperty(value = "connectivity-records")
- private List<Map<String, String>> connectivityRecordsList;
-
- public List<Map<String, String>> getConnectivityRecordsList() {
- return connectivityRecordsList;
- }
-
- public void setConnectivityRecordsList(List<Map<String, String>> connectivityRecordsList) {
- this.connectivityRecordsList = connectivityRecordsList;
- }
-
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/PodStatus.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/PodStatus.java
deleted file mode 100644
index ed04601b2c..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/PodStatus.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.model;
-
-public class PodStatus {
-
- private String name;
- private String nameSpace;
- private boolean ready;
- private String status;
- private String[] ipAddresses;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getNameSpace() {
- return nameSpace;
- }
-
- public void setNameSpace(String nameSpace) {
- this.nameSpace = nameSpace;
- }
-
- public boolean isReady() {
- return ready;
- }
-
- public void setReady(boolean ready) {
- this.ready = ready;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-
- public String[] getIpAddresses() {
- return ipAddresses;
- }
-
- public void setIpAddresses(String[] ipAddresses) {
- this.ipAddresses = ipAddresses;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ProfileEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ProfileEntity.java
deleted file mode 100644
index 875ef0d9a1..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ProfileEntity.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ProfileEntity {
-
- @JsonProperty(value = "rb-name")
- private String rbName;
-
- @JsonProperty(value = "rb-version")
- private String rbVersion;
-
- @JsonProperty(value = "profile-name")
- private String profileName;
-
- @JsonProperty(value = "release-name")
- private String releaseName;
-
- @JsonProperty(value = "namespace")
- private String nameSpace;
-
- @JsonProperty(value = "kubernetes-version")
- private String kubernetesVersion;
-
- public String getRbName() {
- return rbName;
- }
-
- public void setRbName(String rbName) {
- this.rbName = rbName;
- }
-
- public String getRbVersion() {
- return rbVersion;
- }
-
- public void setRbVersion(String rbVersion) {
- this.rbVersion = rbVersion;
- }
-
- public String getProfileName() {
- return profileName;
- }
-
- public void setProfileName(String profileName) {
- this.profileName = profileName;
- }
-
- public String getReleaseName() {
- return releaseName;
- }
-
- public void setReleaseName(String releaseName) {
- this.releaseName = releaseName;
- }
-
- public String getNameSpace() {
- return nameSpace;
- }
-
- public void setNameSpace(String nameSpace) {
- this.nameSpace = nameSpace;
- }
-
- public String getKubernetesVersion() {
- return kubernetesVersion;
- }
-
- public void setKubernetesVersion(String kubernetesVersion) {
- this.kubernetesVersion = kubernetesVersion;
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Resource.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Resource.java
deleted file mode 100644
index d18cd76039..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Resource.java
+++ /dev/null
@@ -1,54 +0,0 @@
-
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@JsonPropertyOrder({"GVK", "Name"})
-public class Resource {
- @JsonProperty("GVK")
- private GroupVersionKind gVK;
- @JsonProperty("Name")
- private String name;
-
- @JsonProperty("GVK")
- public GroupVersionKind getGVK() {
- return gVK;
- }
-
- @JsonProperty("GVK")
- public void setGVK(GroupVersionKind gVK) {
- this.gVK = gVK;
- }
-
- @JsonProperty("Name")
- public String getName() {
- return name;
- }
-
- @JsonProperty("Name")
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ResourceBundleEntity.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ResourceBundleEntity.java
deleted file mode 100644
index bc3a8ad34b..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/ResourceBundleEntity.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class ResourceBundleEntity {
-
- @JsonProperty(value = "rb-name")
- private String rbName;
-
- @JsonProperty(value = "rb-version")
- private String rbVersion;
-
- @JsonProperty(value = "chart-name")
- private String chartName;
-
- @JsonProperty(value = "description")
- private String description;
-
- @JsonProperty(value = "labels")
- private Map<String, String> labels;
-
- public String getRbName() {
- return rbName;
- }
-
- public void setRbName(String rbName) {
- this.rbName = rbName;
- }
-
- public String getRbVersion() {
- return rbVersion;
- }
-
- public void setRbVersion(String rbVersion) {
- this.rbVersion = rbVersion;
- }
-
- public String getChartName() {
- return chartName;
- }
-
- public void setChartName(String chartName) {
- this.chartName = chartName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Map<String, String> getLabels() {
- return labels;
- }
-
- public void setLabels(Map<String, String> labels) {
- this.labels = labels;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Response.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Response.java
deleted file mode 100644
index 423022393c..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Response.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.model;
-
-public class Response {
-
- private String errorMsg;
-
- public Response(String errorMsg) {
- this.errorMsg = errorMsg;
- }
-
- public String getErrorMsg() {
- return errorMsg;
- }
-
- public void setErrorMsg(String errorMsg) {
- this.errorMsg = errorMsg;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Tag.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Tag.java
deleted file mode 100644
index 70faefa150..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/model/Tag.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.onap.so.adapters.cnf.model;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-@JsonIgnoreProperties(value = "true")
-public class Tag {
-
- @JsonProperty(value = "tag-name")
- private String tagName;
-
- public String getTagName() {
- return tagName;
- }
-
- public void setTagName(String tagName) {
- this.tagName = tagName;
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
deleted file mode 100644
index c69b63fe16..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
+++ /dev/null
@@ -1,677 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.rest;
-
-import java.io.File;
-import java.io.IOException;
-import org.apache.http.HttpEntity;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.entity.mime.HttpMultipartMode;
-import org.apache.http.entity.mime.MultipartEntityBuilder;
-import org.apache.http.entity.mime.content.FileBody;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.util.EntityUtils;
-import org.onap.so.adapters.cnf.model.BpmnInstanceRequest;
-import org.onap.so.adapters.cnf.model.ConfigTemplateEntity;
-import org.onap.so.adapters.cnf.model.ConfigurationEntity;
-import org.onap.so.adapters.cnf.model.ConfigurationRollbackEntity;
-import org.onap.so.adapters.cnf.model.ConnectivityInfo;
-import org.onap.so.adapters.cnf.model.ProfileEntity;
-import org.onap.so.adapters.cnf.model.ResourceBundleEntity;
-import org.onap.so.adapters.cnf.model.Tag;
-import org.onap.so.adapters.cnf.service.CnfAdapterService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-
-@RestController
-public class CnfAdapterRest {
-
- private static final Logger logger = LoggerFactory.getLogger(CnfAdapterRest.class);
- private final CloseableHttpClient httpClient = HttpClients.createDefault();
-
- @Autowired
- private CnfAdapterService cnfAdapterService;
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/healthcheck"}, method = RequestMethod.GET,
- produces = "application/json")
- public String healthCheck() throws Exception {
-
- logger.info("healthCheck called.");
- return cnfAdapterService.healthCheck();
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/instance"}, method = RequestMethod.POST,
- produces = "application/json", consumes = "application/json")
- public String createInstance(@RequestBody BpmnInstanceRequest bpmnInstanceRequest)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("createInstance called.");
- return cnfAdapterService.createInstance(bpmnInstanceRequest);
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/instance/{instID}"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getInstanceByInstanceId(@PathVariable("instID") String instanceId)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("getInstanceByInstanceId called.");
-
- return cnfAdapterService.getInstanceByInstanceId(instanceId);
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/instance/{instID}/status"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getInstanceStatusByInstanceId(@PathVariable("instID") String instanceId)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("getInstanceStatusByInstanceId called.");
-
- return cnfAdapterService.getInstanceStatusByInstanceId(instanceId);
-
- }
-
- @RequestMapping(value = {"/api/cnf-adapter/v1/instance"}, method = RequestMethod.GET, produces = "application/json")
- public String getInstanceByRBNameOrRBVersionOrProfileName(
- @RequestParam(value = "rb-name", required = false) String rbName,
- @RequestParam(value = "rb-version", required = false) String rbVersion,
- @RequestParam(value = "profile-name", required = false) String profileName)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("getInstanceByRBNameOrRBVersionOrProfileName called.");
- return cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName(rbName, rbVersion, profileName);
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/instance/{instID}"}, method = RequestMethod.DELETE,
- produces = "application/json")
- public String deleteInstanceByInstanceId(@PathVariable("instID") String instanceID)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("deleteInstanceByInstanceId called.");
- return cnfAdapterService.deleteInstanceByInstanceId(instanceID);
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition"}, method = RequestMethod.POST,
- produces = "application/json")
- public String createRB(@RequestBody ResourceBundleEntity rB) throws Exception {
-
- logger.info("ResourceBundleEntity:" + rB.toString());
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/rb/definition");
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
- String requestBody = objectMapper.writeValueAsString(rB);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getRB(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion)
- throws Exception {
-
- logger.info("get RB called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion);
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}"}, method = RequestMethod.DELETE,
- produces = "application/json")
- public String deleteRB(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion)
- throws Exception {
-
- logger.info("delete RB called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpDelete req = new HttpDelete("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getListOfRB(@PathVariable("rb-name") String rbName) throws Exception {
-
- logger.info("getListOfRB called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/rb/definition/" + rbName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getListOfRBWithoutUsingRBName() throws Exception {
-
- logger.info("getListOfRBWithoutUsingRBName called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/rb/definition");
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/content"},
- method = RequestMethod.POST, produces = "multipart/form-data")
- public String uploadArtifactForRB(@RequestParam("file") MultipartFile file, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion) throws Exception {
-
- logger.info("Upload Artifact For RB called.");
-
- File convFile = new File(file.getOriginalFilename());
- file.transferTo(convFile);
- FileBody fileBody = new FileBody(convFile, ContentType.DEFAULT_BINARY);
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
- builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
- builder.addPart("file", fileBody);
- HttpEntity entity = builder.build();
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post =
- new HttpPost("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/content");
- post.setHeader("Content-Type", "multipart/form-data");
- logger.info(String.valueOf(post));
- post.setEntity(entity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/profile"},
- method = RequestMethod.POST, produces = "application/json")
- public String createProfile(@RequestBody ProfileEntity fE, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion) throws Exception {
-
- logger.info("create Profile called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post =
- new HttpPost("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/profile");
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(fE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/profile/{pr-name}"},
- method = RequestMethod.GET, produces = "application/json")
- public String getProfile(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("pr-name") String prName) throws Exception {
-
- logger.info("get Profile called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet(
- "http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/profile/" + prName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/profile"},
- method = RequestMethod.GET, produces = "application/json")
- public String getListOfProfile(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion)
- throws Exception {
-
- logger.info("getListOfProfile called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req =
- new HttpGet("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/profile");
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/profile/{pr-name}"},
- method = RequestMethod.DELETE, produces = "application/json")
- public String deleteProfile(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("pr-name") String prName) throws Exception {
-
- logger.info("delete Profile called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpDelete req = new HttpDelete(
- "http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/profile/" + prName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/profile/{pr-name}/content"},
- method = RequestMethod.POST, produces = "multipart/form-data")
- public String uploadArtifactForProfile(@RequestParam("file") MultipartFile file,
- @PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("pr-name") String prName) throws Exception {
-
- logger.info("Upload Artifact For Profile called.");
-
- File convFile = new File(file.getOriginalFilename());
- file.transferTo(convFile);
- FileBody fileBody = new FileBody(convFile, ContentType.DEFAULT_BINARY);
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
- builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
- builder.addPart("file", fileBody);
- HttpEntity entity = builder.build();
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion
- + "/profile/" + prName + "/content");
- post.setHeader("Content-Type", "multipart/form-data");
-
- logger.info(String.valueOf(post));
- post.setEntity(entity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/definition/{rb-name}/{rb-version}/profile/{profile-name}/config"},
- method = RequestMethod.POST, produces = "application/json")
- public String createConfiguration(@RequestBody ConfigurationEntity cE, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion, @PathVariable("profile-name") String prName)
- throws Exception {
-
- logger.info("create Configuration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion
- + "/profile/" + prName + "/config");
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(cE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(
- value = {"/api/cnf-adapter/v1/definition/{rb-name}/{rb-version}/profile/{profile-name}/config/{cfg-name}"},
- method = RequestMethod.GET, produces = "application/json")
- public String getConfiguration(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("profile-name") String prName, @PathVariable("cfg-name") String cfgName) throws Exception {
-
- logger.info("get Configuration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion + "/profile/"
- + prName + "/config/" + cfgName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(
- value = {"/api/cnf-adapter/v1/definition/{rb-name}/{rb-version}/profile/{profile-name}/config/{cfg-name}"},
- method = RequestMethod.DELETE, produces = "application/json")
- public String deleteConfiguration(@PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion, @PathVariable("profile-name") String prName,
- @PathVariable("cfg-name") String cfgName) throws Exception {
-
- logger.info("delete Configuration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpDelete req = new HttpDelete("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion
- + "/profile/" + prName + "/config/" + cfgName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(
- value = {"/api/cnf-adapter/v1/definition/{rb-name}/{rb-version}/profile/{profile-name}/config/{cfg-name}"},
- method = RequestMethod.PUT, produces = "application/json")
- public String updateConfiguration(@RequestBody ConfigurationEntity cE, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion, @PathVariable("profile-name") String prName,
- @PathVariable("cfg-name") String cfgName) throws Exception {
-
- logger.info("update Configuration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPut post = new HttpPut("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion + "/profile/"
- + prName + "/config/" + cfgName);
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(cE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/definition/{rb-name}/{rb-version}/profile/{profile-name}/tagit"},
- method = RequestMethod.POST, produces = "application/json")
- public String tagConfigurationValue(@RequestBody Tag tag, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion, @PathVariable("pr-name") String prName) throws Exception {
- logger.info("Tag Configuration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion
- + "/profile/" + prName + "/config/tagit");
-
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(tag);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/connectivity-info"}, method = RequestMethod.POST,
- produces = "application/json")
- public String createConnectivityInfo(@RequestBody ConnectivityInfo cIE) throws Exception {
-
- logger.info("create ConnectivityInfo called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/connectivity-info");
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(cIE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/connectivity-info/{connname}"}, method = RequestMethod.GET,
- produces = "application/json")
- public String getConnectivityInfo(@PathVariable("connname") String connName) throws Exception {
-
- logger.info("get Connectivity Info called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/connectivity-info/" + connName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/connectivity-info/{connname}"}, method = RequestMethod.DELETE,
- produces = "application/json")
- public String deleteConnectivityInfo(@PathVariable("connname") String connName) throws Exception {
-
- logger.info("delete Connectivity Info called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpDelete req = new HttpDelete("http://multicloud-k8s:9015/v1/connectivity-info/" + connName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/config-template"},
- method = RequestMethod.POST, produces = "application/json")
- public String createConfigTemplate(@RequestBody ConfigTemplateEntity tE, @PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion) throws Exception {
-
- logger.info("createConfigTemplate called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost(
- "http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion + "/config-template");
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(tE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/config-template/{tname}"},
- method = RequestMethod.GET, produces = "application/json")
- public String getConfigTemplate(@PathVariable("rb-name") String rbName,
- @PathVariable("rb-version") String rbVersion, @PathVariable("tname") String tName) throws Exception {
-
- logger.info("getConfigTemplate called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpGet req = new HttpGet("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion
- + "/config-template/" + tName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/config-template/{tname}"},
- method = RequestMethod.DELETE, produces = "application/json")
- public String deleteTemplate(@PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("tname") String tName) throws Exception {
-
- logger.info("deleteTemplate called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpDelete req = new HttpDelete("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion
- + "/config-template/" + tName);
-
- try (CloseableHttpResponse response = httpClient.execute(req)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
-
- }
-
- @ResponseBody
- @RequestMapping(
- value = {"/api/cnf-adapter/v1/rb/definition/{rb-name}/{rb-version}/config-template/{tname}/content"},
- method = RequestMethod.POST, produces = "multipart/form-data")
- public String uploadTarFileForTemplate(@RequestParam("file") MultipartFile file,
- @PathVariable("rb-name") String rbName, @PathVariable("rb-version") String rbVersion,
- @PathVariable("tname") String tName) throws Exception {
-
- logger.info("uploadTarFileForTemplate called.");
-
- File convFile = new File(file.getOriginalFilename());
- file.transferTo(convFile);
- FileBody fileBody = new FileBody(convFile, ContentType.DEFAULT_BINARY);
- MultipartEntityBuilder builder = MultipartEntityBuilder.create();
- builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
- builder.addPart("file", fileBody);
- HttpEntity entity = builder.build();
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/rb/definition/" + rbName + "/" + rbVersion
- + "/config-template/" + tName + "/content");
- post.setHeader("Content-Type", "multipart/form-data");
-
- logger.info(String.valueOf(post));
- post.setEntity(entity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
- @ResponseBody
- @RequestMapping(value = {"/api/cnf-adapter/v1/definition/{rbName}/{rbVersion}/profile/{prName}/config/rollback"},
- method = RequestMethod.DELETE, produces = "application/json")
- public String rollbackConfiguration(@RequestBody ConfigurationRollbackEntity rE,
- @PathVariable("rbName") String rbName, @PathVariable("rbVersion") String rbVersion,
- @PathVariable("prName") String prName) throws Exception {
- logger.info("rollbackConfiguration called.");
-
- // TODO
- // Below URL should be changed as appropriate multicloud URL.
- HttpPost post = new HttpPost("http://multicloud-k8s:9015/v1/definition/" + rbName + "/" + rbVersion
- + "/profile/" + prName + "/config/rollback");
-
- ObjectMapper objectMapper = new ObjectMapper();
- String requestBody = objectMapper.writeValueAsString(rE);
- StringEntity requestEntity = new StringEntity(requestBody, ContentType.APPLICATION_JSON);
- post.setEntity(requestEntity);
-
- try (CloseableHttpClient httpClient = HttpClients.createDefault();
- CloseableHttpResponse response = httpClient.execute(post)) {
- logger.info("response:" + response.getEntity());
- return EntityUtils.toString(response.getEntity());
- }
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java
deleted file mode 100644
index a134bace1f..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.service;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import javax.persistence.EntityNotFoundException;
-import javax.ws.rs.core.UriBuilder;
-import org.apache.http.HttpStatus;
-import org.onap.so.adapters.cnf.model.BpmnInstanceRequest;
-import org.onap.so.adapters.cnf.model.MulticloudInstanceRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.HttpClientErrorException;
-import org.springframework.web.client.HttpStatusCodeException;
-import org.springframework.web.client.RestTemplate;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-
-@Service
-public class CnfAdapterService {
- private static final Logger logger = LoggerFactory.getLogger(CnfAdapterService.class);
- @Autowired
- private RestTemplate restTemplate;
- private static final String INSTANCE_CREATE_PATH = "/v1/instance";
- private static final String HEALTH_CHECK = "/v1/healthcheck";
-
- public String healthCheck() {
-
- logger.info("CnfAdapterService healthCheck called");
- ResponseEntity<String> result = null;
- try {
-
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String endpoint = UriBuilder.fromUri(uri).path(HEALTH_CHECK).build().toString();
- HttpEntity<?> requestEntity = new HttpEntity<>(getHttpHeaders());
- result = restTemplate.exchange(endpoint, HttpMethod.GET, requestEntity, String.class);
- return result.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
- }
-
- public String createInstance(BpmnInstanceRequest bpmnInstanceRequest)
- throws JsonParseException, JsonMappingException, IOException {
- try {
- logger.info("CnfAdapterService createInstance called");
- MulticloudInstanceRequest multicloudInstanceRequest = new MulticloudInstanceRequest();
- ResponseEntity<String> instanceResponse = null;
- if (bpmnInstanceRequest.getK8sRBProfileName() != null) {
- multicloudInstanceRequest.setCloudRegion(bpmnInstanceRequest.getCloudRegionId());
- multicloudInstanceRequest.setLabels(bpmnInstanceRequest.getLabels());
- multicloudInstanceRequest.setOverrideValues(bpmnInstanceRequest.getOverrideValues());
- multicloudInstanceRequest.setProfileName(bpmnInstanceRequest.getK8sRBProfileName());
- multicloudInstanceRequest.setRbName(bpmnInstanceRequest.getModelInvariantId());
- multicloudInstanceRequest.setRbVersion(bpmnInstanceRequest.getModelVersionId());
- multicloudInstanceRequest.setVfModuleUuid(bpmnInstanceRequest.getVfModuleUUID());
- } else {
- logger.error("k8sProfileName should not be null");
- // return instanceResponse;
- }
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String endpoint = UriBuilder.fromUri(uri).path(INSTANCE_CREATE_PATH).build().toString();
- HttpEntity<?> entity = getHttpEntity(multicloudInstanceRequest);
- instanceResponse = restTemplate.exchange(endpoint, HttpMethod.POST, entity, String.class);
- return instanceResponse.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
- }
-
- public String getInstanceByInstanceId(String instanceId)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("CnfAdapterService getInstanceByInstanceId called");
- ResponseEntity<String> instanceResponse = null;
- try {
-
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String path = "/v1/instance/" + instanceId;
- String endpoint = UriBuilder.fromUri(uri).path(path).build().toString();
- HttpEntity<?> requestEntity = new HttpEntity<>(getHttpHeaders());
- instanceResponse = restTemplate.exchange(endpoint, HttpMethod.GET, requestEntity, String.class);
- return instanceResponse.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
- }
-
- public String getInstanceStatusByInstanceId(String instanceId)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("CnfAdapterService getInstanceStatusByInstanceId called");
- ResponseEntity<String> instanceResponse = null;
- try {
-
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String path = "/v1/instance/" + instanceId + "/status";
- String endpoint = UriBuilder.fromUri(uri).path(path).build().toString();
- HttpEntity<?> requestEntity = new HttpEntity<>(getHttpHeaders());
- instanceResponse = restTemplate.exchange(endpoint, HttpMethod.GET, requestEntity, String.class);
- return instanceResponse.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
-
- }
-
- public String getInstanceByRBNameOrRBVersionOrProfileName(String rbName, String rbVersion, String profileName)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("CnfAdapterService getInstanceByRBNameOrRBVersionOrProfileName called");
- ResponseEntity<String> instanceMiniResponseList = null;
- try {
-
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String path =
- "/v1/instance" + "?rb-name=" + rbName + "&rb-version=" + rbVersion + "&profile-name=" + profileName;
- String endPoint = uri + path;
- HttpEntity<?> requestEntity = new HttpEntity<>(getHttpHeaders());
- instanceMiniResponseList = restTemplate.exchange(endPoint, HttpMethod.GET, requestEntity, String.class);
- return instanceMiniResponseList.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
- }
-
- public String deleteInstanceByInstanceId(String instanceId)
- throws JsonParseException, JsonMappingException, IOException {
-
- logger.info("CnfAdapterService deleteInstanceByInstanceId called");
- ResponseEntity<String> result = null;
- try {
-
- // String uri = env.getRequiredProperty("multicloud.endpoint"); //TODO:
- // This needs to be added as well
- // for configuration
- String uri = "http://multicloud-k8s:9015"; // TODO: What is the correct uri?
- String path = "/v1/instance/" + instanceId;
- String endpoint = UriBuilder.fromUri(uri).path(path).build().toString();
- HttpEntity<?> requestEntity = new HttpEntity<>(getHttpHeaders());
- result = restTemplate.exchange(endpoint, HttpMethod.DELETE, requestEntity, String.class);
- return result.getBody();
- } catch (HttpClientErrorException e) {
- logger.error("Error Calling Multicloud, e");
- if (HttpStatus.SC_NOT_FOUND == e.getStatusCode().value()) {
- throw new EntityNotFoundException(e.getResponseBodyAsString());
- }
- throw e;
- } catch (HttpStatusCodeException e) {
- logger.error("Error in Multicloud, e");
- throw e;
- }
- }
-
- protected HttpHeaders getHttpHeaders() {
- HttpHeaders headers = new HttpHeaders();
- List<MediaType> acceptableMediaTypes = new ArrayList<>();
- acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
- headers.setAccept(acceptableMediaTypes);
- headers.setContentType(MediaType.APPLICATION_JSON);
- /*
- * try { String userCredentials = CryptoUtils.decrypt(env.getRequiredProperty("mso.cnf.adapter.auth"),
- * env.getRequiredProperty("mso.msoKey")); if (userCredentials != null) { headers.add(HttpHeaders.AUTHORIZATION,
- * "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes())); } } catch
- * (GeneralSecurityException e) { logger.error("Security exception", e); }
- */
- return headers;
- }
-
- protected HttpEntity<?> getHttpEntity(MulticloudInstanceRequest request) {
- HttpHeaders headers = getHttpHeaders();
- return new HttpEntity<>(request, headers);
- }
-}
diff --git a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/util/CNfAdapterUtil.java b/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/util/CNfAdapterUtil.java
deleted file mode 100644
index 25e506c55e..0000000000
--- a/adapters/mso-cnf-adapter/src/main/java/org/onap/so/adapters/cnf/util/CNfAdapterUtil.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.cnf.util;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import org.onap.so.adapters.cnf.exceptions.ApplicationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.onap.logging.filter.base.ErrorCode;
-import static org.onap.so.logger.LoggingAnchor.THREE;
-import static org.onap.so.logger.MessageEnum.RA_NS_EXC;
-
-public class CNfAdapterUtil {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(CNfAdapterUtil.class);
-
- public static final int BAD_REQUEST = 400;
-
- private static final String UNMARSHAL_FAIL_MSG = "Failed to unmarshal json";
-
- private static final String MARSHAL_FAIL_MSG = "Failed to marshal object";
-
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
- public static class StatusDesc {
-
- public static final String ALLOCATE_NSS_SUCCESS = "Allocating nss is " + "successful";
-
- public static final String CREATE_NSS_SUCCESS = "Creating nss is " + "successful";
-
- public static final String DEALLOCATE_NSS_SUCCESS = "Deallocate nss " + "is successful";
-
- public static final String ACTIVATE_NSS_SUCCESS = "Activate nss " + "is successful";
-
- public static final String DEACTIVATE_NSS_SUCCESS = "Deactivate nss " + "is successful";
-
- public static final String QUERY_JOB_STATUS_FAILED = "Query job " + "status failed";
-
- public static final String QUERY_JOB_STATUS_SUCCESS = "Query job " + "status is successful";
-
- private StatusDesc() {
-
- }
- }
-
- private CNfAdapterUtil() {
-
- }
-
- public static void assertObjectNotNull(Object object) throws ApplicationException {
- if (null == object) {
- LOGGER.error("Object is null.");
- throw new ApplicationException(BAD_REQUEST, "An object is null.");
- }
- }
-
- public static <T> T unMarshal(String jsonstr, Class<T> type) throws ApplicationException {
- try {
- return MAPPER.readValue(jsonstr, type);
- } catch (IOException e) {
- LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), UNMARSHAL_FAIL_MSG, e);
- throw new ApplicationException(BAD_REQUEST, UNMARSHAL_FAIL_MSG);
- }
- }
-
- public static String marshal(Object srcObj) throws ApplicationException {
- try {
- return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(srcObj);
- } catch (IOException e) {
- LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), MARSHAL_FAIL_MSG, e);
- throw new ApplicationException(BAD_REQUEST, MARSHAL_FAIL_MSG);
- }
- }
-
-}
diff --git a/adapters/mso-cnf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties b/adapters/mso-cnf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
deleted file mode 100644
index bccd43aea7..0000000000
--- a/adapters/mso-cnf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
+++ /dev/null
@@ -1 +0,0 @@
-org.onap.so.adapters.cnf.extclients.aai.AaiClientPropertiesImpl \ No newline at end of file
diff --git a/adapters/mso-cnf-adapter/src/main/resources/application.yaml b/adapters/mso-cnf-adapter/src/main/resources/application.yaml
deleted file mode 100644
index 5a9adbfd04..0000000000
--- a/adapters/mso-cnf-adapter/src/main/resources/application.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# ============LICENSE_START=======================================================
-# ONAP - SO
-# ================================================================================
-# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-#/
-#aai:
-# auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
-# endpoint: https://aai.onap:30233
-#logging:
-# path: logs
-
-#spring:
-# datasource:
- # driver-class-name: org.mariadb.jdbc.Driver
-# jdbcUrl: jdbc:mariadb://192.168.235.44:30444/requestdb
- # username: root
- # password: secretpassword
-
- # jpa:
- # show-sql: false
- # hibernate:
- # dialect: org.hibernate.dialect.MySQL5Dialect
- # ddl-auto: validate
- # naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- # enable-lazy-load-no-trans: true
-server:
- port: 9012
- tomcat:
- max-threads: 50
-
-#mso:
- # key: 07a7159d3bf51a0e53be7a8f89699be7
- # site-name: localSite
-# logPath: ./logs/cnf
- # msb-ip: msb-iag.{{ include "common.namespace" . }}
- # msb-port: 80
- # adapters:
- # requestDb:
- # endpoint: https://so-request-db-adapter.{{ include "common.namespace" . }}:8083
- # auth: Basic YnBlbDpwYXNzd29yZDEk
-
-#Actuator
-#management:
-# security:
- # enabled: false
- # basic:
-# enabled: false \ No newline at end of file
diff --git a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/CnfAdapterRestTest.java b/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/CnfAdapterRestTest.java
deleted file mode 100644
index ee7a771034..0000000000
--- a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/CnfAdapterRestTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
-
-
-package org.onap.so.adapters.cnf;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import java.util.HashMap;
-import java.util.Map;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.onap.so.adapters.cnf.model.BpmnInstanceRequest;
-import org.onap.so.adapters.cnf.rest.CnfAdapterRest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-public class CnfAdapterRestTest {
-
- @InjectMocks
- CnfAdapterRest cnfAdapterRest;
-
- @Test
- public void createInstanceTest() throws Exception {
-
- Map<String, String> labels = new HashMap<String, String>();
- labels.put("custom-label-1", "label1");
- Map<String, String> overrideValues = new HashMap<String, String>();
- labels.put("image.tag", "latest");
- labels.put("dcae_collector_ip", "1.2.3.4");
- BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest();
- bpmnInstanceRequest.setCloudRegionId("v1");
- bpmnInstanceRequest.setLabels(labels);
- bpmnInstanceRequest.setModelInvariantId("krd");
- bpmnInstanceRequest.setModelVersionId("p1");
- bpmnInstanceRequest.setOverrideValues(overrideValues);
- bpmnInstanceRequest.setVfModuleUUID("20200824");
-
- String mockedResponse = "K8sRBProfileName is required";
- String actualResponse = cnfAdapterRest.createInstance(bpmnInstanceRequest);
- assertNotNull(actualResponse);
- assertEquals(mockedResponse, actualResponse);
- }
-
-}
-*/
diff --git a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/rest/CnfAdapterRestTest.java b/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/rest/CnfAdapterRestTest.java
deleted file mode 100644
index 30197bc7c5..0000000000
--- a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/rest/CnfAdapterRestTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// TODO
-/*
- *
- * ============LICENSE_START==================================================== === ONAP - SO
- * ============================================================================= === Copyright (C) 2020 Huawei
- * Technologies Co., Ltd. All rights reserved.
- * ============================================================================= === Licensed under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- * ============LICENSE_END====================================================== ===
- *
- *
- * package org.onap.so.adapters.cnf.rest;
- *
- *
- * import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import
- * org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import
- * org.mockito.Mock; import org.mockito.Mockito; import org.onap.so.adapters.cnf.model.BpmnInstanceRequest; import
- * org.onap.so.adapters.cnf.model.InstanceMiniResponse; import org.onap.so.adapters.cnf.model.InstanceMiniResponseList;
- * import org.onap.so.adapters.cnf.model.InstanceResponse; import org.onap.so.adapters.cnf.model.InstanceStatusResponse;
- * import org.onap.so.adapters.cnf.model.MulticloudInstanceRequest; import org.onap.so.adapters.cnf.model.Resource;
- * import org.onap.so.adapters.cnf.service.CnfAdapterService; import org.springframework.http.HttpStatus; import
- * org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner;
- *
- *
- * @RunWith(SpringRunner.class) public class CnfAdapterRestTest {
- *
- * @InjectMocks CnfAdapterRest cnfAdapterRest;
- *
- * @Mock CnfAdapterService cnfAdapterService;
- *
- * @Mock ResponseEntity<InstanceMiniResponseList> instacneMiniResponseList;
- *
- * @Mock ResponseEntity<InstanceStatusResponse> instanceStatusResponse;
- *
- * @Test public void healthCheckTest() throws Exception {
- *
- * ResponseEntity<String> response = new ResponseEntity<String>(HttpStatus.OK); CnfAdapterService cnfAdapterService =
- * Mockito.mock(CnfAdapterService.class); Mockito.when(cnfAdapterService.healthCheck()).thenReturn(response);
- * cnfAdapterRest.healthCheck(); Assert.assertNotNull(response); Assert.assertEquals(HttpStatus.OK,
- * response.getStatusCode()); }
- *
- * @Test public void createInstanceTest() throws Exception {
- *
- * Map<String, String> labels = new HashMap<String, String>(); labels.put("custom-label-1", "label1"); Map<String,
- * String> overrideValues = new HashMap<String, String>(); labels.put("image.tag", "latest");
- * labels.put("dcae_collector_ip", "1.2.3.4"); BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest();
- * bpmnInstanceRequest.setCloudRegionId("v1"); bpmnInstanceRequest.setLabels(labels);
- * bpmnInstanceRequest.setModelInvariantId("krd"); bpmnInstanceRequest.setModelVersionId("p1");
- * bpmnInstanceRequest.setOverrideValues(overrideValues); bpmnInstanceRequest.setVfModuleUUID("20200824");
- * List<Resource> resourceList = new ArrayList<Resource>(); InstanceResponse instanceResponse = new InstanceResponse();
- * instanceResponse.setId("123"); instanceResponse.setNamespace("testNamespace"); instanceResponse.setRequest(new
- * MulticloudInstanceRequest()); instanceResponse.setResources(resourceList); String createInstanceResponse = new
- * ResponseEntity<InstanceResponse>(instanceResponse, HttpStatus.CREATED); CnfAdapterService cnfAdapterService =
- * Mockito.mock(CnfAdapterService.class); Mockito.when(cnfAdapterService.createInstance(bpmnInstanceRequest)).
- * thenReturn(createInstanceResponse); cnfAdapterRest.createInstance(bpmnInstanceRequest);
- * Assert.assertNotNull(createInstanceResponse); Assert.assertEquals(HttpStatus.CREATED,
- * createInstanceResponse.getStatusCode()); }
- *
- * @Test public void getInstanceByInstanceIdTest() throws Exception {
- *
- * String instanceId = "123"; String createInstanceResponse = new ResponseEntity<InstanceResponse>(HttpStatus.OK);
- * CnfAdapterService cnfAdapterService = Mockito.mock(CnfAdapterService.class);
- * Mockito.when(cnfAdapterService.getInstanceByInstanceId(instanceId)). thenReturn(createInstanceResponse);
- * cnfAdapterRest.getInstanceByInstanceId(instanceId); Assert.assertNotNull(createInstanceResponse);
- * Assert.assertEquals(HttpStatus.OK, createInstanceResponse.getStatusCode()); }
- *
- * @Test public void deleteInstanceByInstanceIdTest() throws Exception {
- *
- * String instanceId = "123"; ResponseEntity<String> response = new ResponseEntity<String>(HttpStatus.OK);
- * CnfAdapterService cnfAdapterService = Mockito.mock(CnfAdapterService.class);
- * Mockito.when(cnfAdapterService.deleteInstanceByInstanceId(instanceId)). thenReturn(response);
- * cnfAdapterRest.deleteInstanceByInstanceId(instanceId); Assert.assertNotNull(response);
- * Assert.assertEquals(HttpStatus.OK, response.getStatusCode()); }
- *
- * @Test public void getInstanceStatusByInstanceIdTest() throws Exception {
- *
- * String instanceId = "123"; instanceStatusResponse = new ResponseEntity<InstanceStatusResponse>(HttpStatus.OK);
- * CnfAdapterService cnfAdapterService = Mockito.mock(CnfAdapterService.class);
- * Mockito.when(cnfAdapterService.getInstanceStatusByInstanceId(instanceId)). thenReturn(instanceStatusResponse);
- * cnfAdapterRest.getInstanceStatusByInstanceId(instanceId); Assert.assertNotNull(instanceStatusResponse);
- * Assert.assertEquals(HttpStatus.OK, instanceStatusResponse.getStatusCode()); }
- *
- * @Test public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
- *
- * String rbName = "xyz"; String rbVersion = "v1"; String profileName = "p1"; InstanceMiniResponse instanceMiniResponse
- * = new InstanceMiniResponse(HttpStatus.OK.toString()); List<InstanceMiniResponse> instancList = new
- * ArrayList<InstanceMiniResponse>(); instancList.add(instanceMiniResponse); InstanceMiniResponseList
- * instanceMiniRespList = new InstanceMiniResponseList(HttpStatus.OK.toString());
- * instanceMiniRespList.setInstancList(instancList); instanceMiniRespList.setErrorMsg(HttpStatus.OK.toString());
- * ResponseEntity<InstanceMiniResponseList> respone = new ResponseEntity<InstanceMiniResponseList>(instanceMiniRespList,
- * HttpStatus.OK); CnfAdapterService cnfAdapterService = Mockito.mock(CnfAdapterService.class);
- * Mockito.when(cnfAdapterService.getInstanceByRBNameOrRBVersionOrProfileName( rbName, rbVersion, profileName))
- * .thenReturn(instacneMiniResponseList); cnfAdapterRest.getInstanceByRBNameOrRBVersionOrProfileName(rbName, rbVersion,
- * profileName); Assert.assertNotNull(instacneMiniResponseList); Assert.assertEquals(HttpStatus.OK.toString(),
- * instanceMiniRespList.getErrorMsg()); }
- *
- * }
- *
- */
diff --git a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java b/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java
deleted file mode 100644
index e114f44a1d..0000000000
--- a/adapters/mso-cnf-adapter/src/test/java/org/onap/so/adapters/cnf/service/CnfAdapterServiceTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// TODO
-/*
- * package org.onap.so.adapters.cnf.service;
- *
- * import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks;
- * import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; import
- * org.onap.so.adapters.cnf.model.BpmnInstanceRequest; import org.onap.so.adapters.cnf.model.InstanceMiniResponseList;
- * import org.onap.so.adapters.cnf.model.InstanceResponse; import org.onap.so.adapters.cnf.model.InstanceStatusResponse;
- * import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import
- * org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import
- * org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate;
- *
- * @RunWith(SpringRunner.class) public class CnfAdapterServiceTest {
- *
- * @InjectMocks CnfAdapterService cnfAdapterService;
- *
- * @Mock ResponseEntity<InstanceResponse> createInstanceResponse;
- *
- * @Mock ResponseEntity<InstanceMiniResponseList> instacneMiniResponseList;
- *
- * @Mock ResponseEntity<InstanceStatusResponse> instanceStatusResponse;
- *
- * @Mock private RestTemplate restTemplate;
- *
- * @Test public void healthCheckTest() throws Exception {
- *
- * ResponseEntity<String> response = new ResponseEntity<String>(HttpStatus.OK);
- *
- * Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<String>>any())).thenReturn(response);
- *
- * ResponseEntity<String> actualResponse = cnfAdapterService.healthCheck(); Assert.assertNotNull(actualResponse);
- * Assert.assertEquals(HttpStatus.OK, actualResponse.getStatusCode());
- *
- * }
- *
- * @Test public void createInstanceTest() throws Exception {
- *
- * ResponseEntity<InstanceResponse> response = new ResponseEntity<InstanceResponse>(HttpStatus.OK); BpmnInstanceRequest
- * bpmnInstanceRequest = new BpmnInstanceRequest(); bpmnInstanceRequest.setK8sRBProfileName("k8sRBProfileName");
- * Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<InstanceResponse>>any())).thenReturn(response);
- *
- * ResponseEntity<InstanceResponse> actualResponse = cnfAdapterService.createInstance(bpmnInstanceRequest);
- * Assert.assertNotNull(response); Assert.assertEquals(actualResponse.getStatusCode(), response.getStatusCode());
- *
- * }
- *
- * @Test public void createInstanceExceptionTest() throws Exception {
- *
- * BpmnInstanceRequest bpmnInstanceRequest = new BpmnInstanceRequest(); ResponseEntity<InstanceResponse> response =
- * cnfAdapterService.createInstance(bpmnInstanceRequest); Assert.assertNull(response);
- *
- * }
- *
- * @Test public void getInstanceByInstanceIdTest() throws Exception {
- *
- * ResponseEntity<InstanceResponse> response = new ResponseEntity<InstanceResponse>(HttpStatus.OK); String instanceId =
- * "123"; Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<InstanceResponse>>any())).thenReturn(response);
- *
- * ResponseEntity<InstanceResponse> actualResponse = cnfAdapterService.getInstanceByInstanceId(instanceId);
- * Assert.assertNotNull(actualResponse); Assert.assertEquals(HttpStatus.OK, actualResponse.getStatusCode());
- *
- * }
- *
- * @Test public void getInstanceStatusByInstanceIdTest() throws Exception {
- *
- * ResponseEntity<InstanceStatusResponse> response = new ResponseEntity<InstanceStatusResponse>(HttpStatus.OK); String
- * instanceId = "123"; Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<InstanceStatusResponse>>any())).thenReturn(response);
- *
- * ResponseEntity<InstanceStatusResponse> actualResponse = cnfAdapterService .getInstanceStatusByInstanceId(instanceId);
- * Assert.assertNotNull(actualResponse); Assert.assertEquals(HttpStatus.OK, response.getStatusCode());
- *
- * }
- *
- * @Test public void getInstanceByRBNameOrRBVersionOrProfileNameTest() throws Exception {
- *
- * ResponseEntity<InstanceMiniResponseList> response = new ResponseEntity<InstanceMiniResponseList>(HttpStatus.OK);
- * String rbName = "xyz"; String rbVersion = "v1"; String profileName = "p1";
- *
- * Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<InstanceMiniResponseList>>any())).thenReturn(response);
- *
- * ResponseEntity<InstanceMiniResponseList> actualResponse = cnfAdapterService
- * .getInstanceByRBNameOrRBVersionOrProfileName(rbName, rbVersion, profileName); Assert.assertNotNull(actualResponse);
- * Assert.assertEquals(HttpStatus.OK, actualResponse.getStatusCode());
- *
- * }
- *
- * @Test public void deleteInstanceByInstanceIdTest() throws Exception {
- *
- * ResponseEntity<String> response = new ResponseEntity<String>(HttpStatus.OK); String instanceId = "123";
- * Mockito.when(restTemplate.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class),
- * Matchers.<HttpEntity<?>>any(), Matchers.<Class<String>>any())).thenReturn(response);
- *
- * ResponseEntity<String> actualResponse = cnfAdapterService.deleteInstanceByInstanceId(instanceId);
- * Assert.assertNotNull(response); Assert.assertEquals(HttpStatus.OK, response.getStatusCode());
- *
- * }
- *
- * }
- */
diff --git a/adapters/mso-nssmf-adapter/pom.xml b/adapters/mso-nssmf-adapter/pom.xml
deleted file mode 100644
index 0099bb3091..0000000000
--- a/adapters/mso-nssmf-adapter/pom.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-<!--
- ~*
- ~============LICENSE_START=======================================================
- ~* ONAP - SO
- ~*================================================================================
- ~* Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- ~*================================================================================
- ~* Licensed under the Apache License, Version 2.0 (the "License");
- ~* you may not use this file except in compliance with the License.
- ~* You may obtain a copy of the License at
- ~*
- ~* http://www.apache.org/licenses/LICENSE-2.0
- ~*
- ~* Unless required by applicable law or agreed to in writing, software
- ~* distributed under the License is distributed on an "AS IS" BASIS,
- ~* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~* See the License for the specific language governing permissions and
- ~* limitations under the License.
- ~* ============LICENSE_END=========================================================
- ~*/
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-nssmf-adapter</artifactId>
- <packaging>jar</packaging>
- <name>mso-nssmf-adapter</name>
- <description>Web service endpoint for nssmf operations</description>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.adapters.nssmf.MSONssmfApplication</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <excludes>
- <exclude>**/*.p12</exclude>
- <exclude>**/*.jks</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>false</filtering>
- <includes>
- <include>**/*.p12</include>
- <include>**/*.jks</include>
- </includes>
- </resource>
- </resources>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db-repositories</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.vorburger.mariaDB4j</groupId>
- <artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>3.14.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
- </dependencies>
-</project>
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/MSONssmfApplication.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/MSONssmfApplication.java
deleted file mode 100644
index 83a09dc343..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/MSONssmfApplication.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf;
-
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-public class MSONssmfApplication {
-
- public static void main(String... args) {
- SpringApplication.run(MSONssmfApplication.class, args);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/RequestLogger.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/RequestLogger.java
deleted file mode 100644
index 44f814aa10..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/RequestLogger.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.annotation;
-
-
-import java.lang.annotation.*;
-
-@Target({ElementType.METHOD, ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface RequestLogger {
- boolean ignore() default false;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/ServiceLogger.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/ServiceLogger.java
deleted file mode 100644
index 1de29bcc2b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/annotation/ServiceLogger.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.annotation;
-
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Target({ElementType.METHOD, ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ServiceLogger {
-
- String value() default "";
-
- boolean ignore() default false;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/NssmfAdapterConfig.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/NssmfAdapterConfig.java
deleted file mode 100644
index 6a592448a6..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/NssmfAdapterConfig.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.config;
-
-import lombok.Getter;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@Getter
-public class NssmfAdapterConfig {
-
- @Value("${mso.infra.endpoint}")
- private String infraEndpoint;
-
- @Value("${mso.infra.auth}")
- private String infraAuth;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/RequestDbConfig.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/RequestDbConfig.java
deleted file mode 100644
index dcb5d6198c..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/config/RequestDbConfig.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.config;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.annotation.Profile;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@Profile({"!test"})
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(entityManagerFactoryRef = "requestEntityManagerFactory",
- transactionManagerRef = "requestTransactionManager", basePackages = {"org.onap.so.db.request.data.repository"})
-public class RequestDbConfig {
-
- @Primary
- @Bean(name = "requestDataSource")
- @ConfigurationProperties(prefix = "spring.datasource")
- public DataSource dataSource() {
- return DataSourceBuilder.create().build();
- }
-
- @Primary
- @Bean(name = "requestEntityManagerFactory")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
- @Qualifier("requestDataSource") DataSource dataSource) {
- return builder.dataSource(dataSource).packages("org.onap.so.db.request.beans").persistenceUnit("requestDB")
- .build();
- }
-
- @Primary
- @Bean(name = "requestTransactionManager")
- public PlatformTransactionManager transactionManager(
- @Qualifier("requestEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
- return new JpaTransactionManager(entityManagerFactory);
- }
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/consts/NssmfAdapterConsts.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/consts/NssmfAdapterConsts.java
deleted file mode 100644
index a24f8ef0c7..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/consts/NssmfAdapterConsts.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.consts;
-
-import org.onap.so.adapters.nssmf.entity.NssmfUrlInfo;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.ExecutorType;
-import org.onap.so.adapters.nssmf.enums.HttpMethod;
-import org.onap.so.beans.nsmf.NetworkType;
-import java.util.HashMap;
-import java.util.Map;
-
-public class NssmfAdapterConsts {
-
- public final static String ONAP_INTERNAL_TAG = "ONAP_internal";
-
- public final static String CURRENT_INTERNAL_NSSMF_API_VERSION = "v1";
-
- private static Map<String, NssmfUrlInfo> urlInfoMap = new HashMap<>();
-
- private final static String EXTERNAL_CN_ALLOCATE_URL = "/api/rest/provMns/{apiVersion}/NSS/SliceProfiles";
-
- private final static String EXTERNAL_TN_ALLOCATE_URL = "/api/rest/provMns/{apiVersion}/tn/NSS/SliceProfiles";
-
- private final static String EXTERNAL_AN_ALLOCATE_URL = "/ObjectManagement/NSS/SliceProfiles";
-
- private final static String INTERNAL_ALLOCATE_URL = "/onap/so/infra/3gppservices/{apiVersion}/allocate";
-
- private final static String EXTERNAL_CN_DEALLOCATE_URL =
- "/api/rest/provMns/{apiVersion}/NSS/SliceProfiles/{sliceProfileId}";
-
- private final static String EXTERNAL_TN_DEALLOCATE_URL =
- "/api/rest/provMns/{apiVersion}/tn/NSS/SliceProfiles/{sliceProfileId}";
-
- private final static String EXTERNAL_AN_DEALLOCATE_URL = "/ObjectManagement/NSS/SliceProfiles/{sliceProfileId}";
-
- private final static String INTERNAL_DEALLOCATE_URL = "/onap/so/infra/3gppservices/{apiVersion}/deAllocate";
-
- private final static String EXTERNAL_CN_ACTIVATE_URL = "/api/rest/provMns/{apiVersion}/NSS/{snssai}/activation";
-
- private final static String EXTERNAL_TN_ACTIVATE_URL = "/api/rest/provMns/{apiVersion}/tn/NSS/{snssai}/activation";
-
- private final static String EXTERNAL_AN_ACTIVATE_URL = "/api/rest/provMns/{apiVersion}/an/NSS/{snssai}/activations";
-
- private final static String INTERNAL_ACTIVATE_URL = "/onap/so/infra/3gppservices/{apiVersion}/activate";
-
- private final static String EXTERNAL_CN_DEACTIVATE_URL = "/api/rest/provMns/{apiVersion}/NSS/{snssai}/deactivation";
-
- private final static String EXTERNAL_TN_DEACTIVATE_URL =
- "/api/rest/provMns/{apiVersion}/tn/NSS/{snssai}/deactivation";
-
- private final static String EXTERNAL_AN_DEACTIVATE_URL =
- "/api/rest/provMns/{apiVersion}/an/NSS/{snssai}/deactivation";
-
- private final static String INTERNAL_DEACTIVATE_URL = "/onap/so/infra/3gppservices/{apiVersion}/deActivate";
-
- //
- private final static String EXTERNAL_CN_TERMINATE_URL =
- "/api/rest/provMns/{apiVersion}/NSS/SliceProfiles/{SliceProfileId}";
-
- private final static String EXTERNAL_TN_TERMINATE_URL =
- "/api/rest/provMns/{apiVersion}/tn/NSS/SliceProfiles/{SliceProfileId}";
-
- private final static String EXTERNAL_AN_TERMINATE_URL =
- "/api/rest/provMns/{apiVersion}/an/NSS/SliceProfiles/{SliceProfileId}";
-
- private final static String INTERNAL_TERMINATE_URL = "/onap/so/infra/3gppservices/{apiVersion}/terminate";
-
- //
- private final static String EXTERNAL_AN_MODIFY_URL =
- "/api/rest/provMns/{apiVersion}/an/NSS/SliceProfiles/{SliceProfileId}";
-
- private final static String INTERNAL_MODIFY_URL = "/onap/so/infra/3gppservices/{apiVersion}/modify";
-
- //
- private final static String EXTERNAL_QUERY_JOB_STATUS = "/api/rest/provMns/{apiVersion}/NSS/jobs/{jobId}";
-
- private final static String INTERNAL_QUERY_SUB_NET_CAPABILITY =
- "/onap/so/infra/3gppservices/{apiVersion}/subnetCapabilityQuery";
-
- static {
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.ALLOCATE),
- new NssmfUrlInfo(EXTERNAL_AN_ALLOCATE_URL, HttpMethod.POST));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.ALLOCATE),
- new NssmfUrlInfo(EXTERNAL_TN_ALLOCATE_URL, HttpMethod.POST));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.ALLOCATE),
- new NssmfUrlInfo(EXTERNAL_CN_ALLOCATE_URL, HttpMethod.POST));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.ALLOCATE),
- new NssmfUrlInfo(INTERNAL_ALLOCATE_URL, HttpMethod.POST));
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.DEALLOCATE),
- new NssmfUrlInfo(EXTERNAL_AN_DEALLOCATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.DEALLOCATE),
- new NssmfUrlInfo(EXTERNAL_TN_DEALLOCATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.DEALLOCATE),
- new NssmfUrlInfo(EXTERNAL_CN_DEALLOCATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.DEALLOCATE),
- new NssmfUrlInfo(INTERNAL_DEALLOCATE_URL, HttpMethod.DELETE));
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.ACTIVATE),
- new NssmfUrlInfo(EXTERNAL_AN_ACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.ACTIVATE),
- new NssmfUrlInfo(EXTERNAL_TN_ACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.ACTIVATE),
- new NssmfUrlInfo(EXTERNAL_CN_ACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.ACTIVATE),
- new NssmfUrlInfo(INTERNAL_ACTIVATE_URL, HttpMethod.POST));
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.DEACTIVATE),
- new NssmfUrlInfo(EXTERNAL_AN_DEACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.DEACTIVATE),
- new NssmfUrlInfo(EXTERNAL_TN_DEACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.DEACTIVATE),
- new NssmfUrlInfo(EXTERNAL_CN_DEACTIVATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.DEACTIVATE),
- new NssmfUrlInfo(INTERNAL_DEACTIVATE_URL, HttpMethod.POST));
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.TERMINATE),
- new NssmfUrlInfo(EXTERNAL_AN_TERMINATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.TERMINATE),
- new NssmfUrlInfo(EXTERNAL_TN_TERMINATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.TERMINATE),
- new NssmfUrlInfo(EXTERNAL_CN_TERMINATE_URL, HttpMethod.DELETE));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.TERMINATE),
- new NssmfUrlInfo(INTERNAL_TERMINATE_URL, HttpMethod.DELETE));
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.MODIFY),
- new NssmfUrlInfo(EXTERNAL_AN_MODIFY_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.MODIFY),
- new NssmfUrlInfo(EXTERNAL_CN_ALLOCATE_URL, HttpMethod.PUT));
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.MODIFY),
- new NssmfUrlInfo(INTERNAL_MODIFY_URL, HttpMethod.PUT));
-
-
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.QUERY_JOB_STATUS),
- new NssmfUrlInfo(EXTERNAL_QUERY_JOB_STATUS, HttpMethod.GET));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.QUERY_JOB_STATUS),
- new NssmfUrlInfo(EXTERNAL_QUERY_JOB_STATUS, HttpMethod.GET));
- urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.TRANSPORT, ActionType.QUERY_JOB_STATUS),
- new NssmfUrlInfo(EXTERNAL_QUERY_JOB_STATUS, HttpMethod.GET));
-
- urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.QUERY_SUB_NET_CAPABILITY),
- new NssmfUrlInfo(INTERNAL_QUERY_SUB_NET_CAPABILITY, HttpMethod.GET));
- }
-
- /**
- * get nssmf url info from consts
- *
- * @param executorType {@link ExecutorType}
- * @param networkType {@link NetworkType}
- * @param actionType {@link ActionType}
- * @return {@link NssmfUrlInfo}
- */
- public static NssmfUrlInfo getNssmfUrlInfo(ExecutorType executorType, NetworkType networkType,
- ActionType actionType) {
-
- return urlInfoMap.get(generateKey(executorType, networkType, actionType));
- }
-
- private static String generateKey(ExecutorType executorType, NetworkType networkType, ActionType actionType) {
- if (ExecutorType.EXTERNAL.equals(executorType)) {
- return executorType.name() + "_" + networkType.name() + "_" + actionType.name();
- }
- return executorType.name() + "_" + actionType.name();
- }
-
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterController.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterController.java
deleted file mode 100644
index 3732e2c256..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/controller/NssmfAdapterController.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.onap.so.adapters.nssmf.controller;
-
-import org.onap.so.adapters.nssmf.annotation.RequestLogger;
-import org.onap.so.adapters.nssmf.service.NssmfManagerService;
-import org.onap.so.beans.nsmf.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-
-@RestController
-@RequestMapping(value = "/api/rest/provMns/v1", produces = {APPLICATION_JSON}, consumes = {APPLICATION_JSON})
-@RequestLogger
-public class NssmfAdapterController {
-
- @Autowired
- private NssmfManagerService nssmfManagerService;
-
- @PostMapping(value = "/NSS/SliceProfiles")
- public ResponseEntity allocateNssi(@RequestBody NssmfAdapterNBIRequest nbiRequest) {
- return nssmfManagerService.allocateNssi(nbiRequest);
- }
-
- @PostMapping(value = "/NSS/SliceProfiles/{sliceProfileId}")
- public ResponseEntity deAllocateNssi(@RequestBody NssmfAdapterNBIRequest nbiRequest,
- @PathVariable("sliceProfileId") final String sliceProfileId) {
- return nssmfManagerService.deAllocateNssi(nbiRequest, sliceProfileId);
- }
-
-
- @PostMapping(value = "/NSS/{snssai}/activation")
- public ResponseEntity activateNssi(@RequestBody NssmfAdapterNBIRequest nbiRequest,
- @PathVariable("snssai") String snssai) {
- return nssmfManagerService.activateNssi(nbiRequest, snssai);
- }
-
- @PostMapping(value = "/NSS/{snssai}/deactivation")
- public ResponseEntity deactivateNssi(@RequestBody NssmfAdapterNBIRequest nbiRequest,
- @PathVariable("snssai") String snssai) {
- return nssmfManagerService.deActivateNssi(nbiRequest, snssai);
- }
-
- @PostMapping(value = "/NSS/jobs/{jobId}")
- public ResponseEntity queryJobStatus(@RequestBody NssmfAdapterNBIRequest nbiRequest,
- @PathVariable("jobId") String jobId) {
- return nssmfManagerService.queryJobStatus(nbiRequest, jobId);
- }
-
- @PostMapping(value = "/NSS/NSSISelectionCapability")
- public ResponseEntity queryNSSISelectionCapability(@RequestBody NssmfAdapterNBIRequest nbiRequest) {
- return nssmfManagerService.queryNSSISelectionCapability(nbiRequest);
- }
-
- @PostMapping(value = "/NSS/subnetCapabilityQuery")
- public ResponseEntity querySubnetCapability(@RequestBody NssmfAdapterNBIRequest nbiRequest) {
- return nssmfManagerService.querySubnetCapability(nbiRequest);
- }
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/ErrorResponse.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/ErrorResponse.java
deleted file mode 100644
index a8653f8d73..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/ErrorResponse.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.entity;
-
-public class ErrorResponse {
-
- private int status;
-
- private String error;
-
- private String message;
-
- public ErrorResponse(int status, String message) {
- this.status = status;
- this.message = message;
- this.error = "Bad Request";
- }
-
- public int getStatus() {
- return status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public String getError() {
- if (status == 500) {
- this.error = "Internal Server Error";
- }
- return error;
- }
-
- public void setError(String error) {
- this.error = error;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfInfo.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfInfo.java
deleted file mode 100644
index af26264074..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfInfo.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.entity;
-
-import lombok.Data;
-
-@Data
-public class NssmfInfo {
-
- private String url;
-
- private String ipAddress;
-
- private String port;
-
- private String insecure;
-
- private String cacert;
-
- private String userName;
-
- private String password;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfUrlInfo.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfUrlInfo.java
deleted file mode 100644
index f55ff10f1c..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/NssmfUrlInfo.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.onap.so.adapters.nssmf.entity;
-
-import lombok.Data;
-import org.onap.so.adapters.nssmf.enums.HttpMethod;
-
-@Data
-public class NssmfUrlInfo {
-
- private String url;
-
- private HttpMethod httpMethod;
-
- public NssmfUrlInfo(String url, HttpMethod httpMethod) {
- this.url = url;
- this.httpMethod = httpMethod;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/RestResponse.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/RestResponse.java
deleted file mode 100644
index 218867c1ab..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/RestResponse.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.entity;
-
-import java.util.Map;
-
-public class RestResponse {
-
- // the response content
- private String responseContent;
-
- // the response status
- private int status;
-
- // the response header
- private Map<String, String> respHeaderMap;
-
- public RestResponse() {
- this.status = -1;
-
- this.respHeaderMap = null;
- }
-
- public int getStatus() {
- return this.status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public Map<String, String> getRespHeaderMap() {
- return this.respHeaderMap;
- }
-
- public void setRespHeaderMap(Map<String, String> header) {
- this.respHeaderMap = header;
- }
-
- public int getRespHeaderInt(String key) {
- if (this.respHeaderMap != null) {
- String result = this.respHeaderMap.get(key);
- if (result != null) {
- return Integer.parseInt(result);
- }
- }
- return -1;
- }
-
- public long getRespHeaderLong(String key) {
- if (this.respHeaderMap != null) {
- String result = this.respHeaderMap.get(key);
- if (result != null) {
- return Long.parseLong(result);
- }
- }
- return -1L;
- }
-
- public String getRespHeaderStr(String key) {
- if (this.respHeaderMap != null) {
- return this.respHeaderMap.get(key);
- }
- return null;
- }
-
- public String getResponseContent() {
- return this.responseContent;
- }
-
- public void setResponseContent(String responseString) {
- this.responseContent = responseString;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenRequest.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenRequest.java
deleted file mode 100644
index bfcb875290..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenRequest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.entity;
-
-import lombok.Data;
-
-@Data
-public class TokenRequest {
-
- private String grantType;
-
- private String userName;
-
- private String value;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ActionType.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ActionType.java
deleted file mode 100644
index 530cc1be0d..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ActionType.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.enums;
-
-import lombok.Getter;
-
-@Getter
-public enum ActionType {
- /**
- * allocate
- */
- ALLOCATE("allocate"),
-
- DEALLOCATE("deallocate"),
-
- CREATE("create"),
-
- TERMINATE("terminate"),
-
- ACTIVATE("activate"),
-
- DEACTIVATE("deactivate"),
-
- QUERY_JOB_STATUS("query_job_status"),
-
- MODIFY_BY_ID("modify_by_id"),
-
- MODIFY("modify"),
-
- QUERY_NSSI_SELECTION_CAPABILITY("query_nssi_selection_capability"),
-
- QUERY_SUB_NET_CAPABILITY("query_sub_net_capability"),;
-
- private String type;
-
-
- ActionType(String type) {
- this.type = type;
- }
-
- public static ActionType getActionType(String value) {
- for (ActionType actionType : ActionType.values()) {
- if (actionType.type.equalsIgnoreCase(value)) {
- return actionType;
- }
- }
- return null;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ExecutorType.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ExecutorType.java
deleted file mode 100644
index a76a54c348..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ExecutorType.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.enums;
-
-public enum ExecutorType {
- INTERNAL, EXTERNAL
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/HttpMethod.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/HttpMethod.java
deleted file mode 100644
index 9271bb50b3..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/HttpMethod.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.enums;
-
-public enum HttpMethod {
- GET, POST, PUT, DELETE, PATCH;
-
- public static HttpMethod fromString(String s) {
- if (s == null)
- return null;
- if (("get").equalsIgnoreCase(s))
- return GET;
- if (("post").equalsIgnoreCase(s))
- return POST;
- if (("put").equalsIgnoreCase(s))
- return PUT;
- if (("delete").equalsIgnoreCase(s))
- return DELETE;
- if (("patch").equalsIgnoreCase(s))
- return PATCH;
- throw new IllegalArgumentException("Invalid value for HTTP Method: " + s);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/JobStatus.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/JobStatus.java
deleted file mode 100644
index d5cc1df377..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/JobStatus.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.enums;
-
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-
-
-public enum JobStatus {
- STARTED, PROCESSING, FINISHED, ERROR;
-
- public static JobStatus fromString(String s) throws ApplicationException {
- if (s == null)
- return null;
- if (("started").equalsIgnoreCase(s))
- return STARTED;
- if (("processing").equalsIgnoreCase(s))
- return PROCESSING;
- if (("finished").equalsIgnoreCase(s))
- return FINISHED;
- if (("error").equalsIgnoreCase(s))
- return ERROR;
- throw new ApplicationException(500, "Invalid value for Job " + "Status: " + s);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/SelectionType.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/SelectionType.java
deleted file mode 100644
index 420dfdce49..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/SelectionType.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.enums;
-
-public enum SelectionType {
- NSSMF,
-
- NSMF
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java
deleted file mode 100644
index 2461f5ca78..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.exceptions;
-
-import org.onap.so.adapters.nssmf.entity.ErrorResponse;
-import org.springframework.http.ResponseEntity;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public class ApplicationException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- private int errorCode;
-
- private String errorMsg;
-
- public ApplicationException(int errorCode, String errorMsg) {
- this.errorCode = errorCode;
- this.errorMsg = errorMsg;
- }
-
- public int getErrorCode() {
- return errorCode;
- }
-
- public void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public String getErrorMsg() {
- return errorMsg;
- }
-
- public void setErrorMsg(String errorMsg) {
- this.errorMsg = errorMsg;
- }
-
- public ResponseEntity buildErrorResponse() {
- String message;
- try {
- ErrorResponse err = new ErrorResponse(errorCode, errorMsg);
- message = marshal(err);
- } catch (ApplicationException e) {
- return ResponseEntity.status(500).body("Internal Server Error");
- }
- return ResponseEntity.status(errorCode).body(message);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientPropertiesImpl.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientPropertiesImpl.java
deleted file mode 100644
index 61adfcf061..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientPropertiesImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.extclients.aai;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import org.onap.aaiclient.client.aai.AAIProperties;
-import org.onap.aaiclient.client.aai.AAIVersion;
-import org.onap.so.spring.SpringContextHelper;
-import org.springframework.context.ApplicationContext;
-
-public class AaiClientPropertiesImpl implements AAIProperties {
-
- private final String endpoint;
-
- private final String encryptedBasicAuth;
-
- private final String encrytptionKey;
-
- public AaiClientPropertiesImpl() {
- final ApplicationContext context = SpringContextHelper.getAppContext();
- this.endpoint = context.getEnvironment().getProperty("aai.endpoint");
- this.encryptedBasicAuth = context.getEnvironment().getProperty("aai.auth");
- this.encrytptionKey = context.getEnvironment().getProperty("mso.key");
- }
-
- @Override
- public AAIVersion getDefaultVersion() {
- return AAIVersion.LATEST;
- }
-
- @Override
- public String getAuth() {
- return encryptedBasicAuth;
- }
-
- @Override
- public String getKey() {
- return encrytptionKey;
- }
-
- @Override
- public URL getEndpoint() throws MalformedURLException {
- return new URL(endpoint);
- }
-
- @Override
- public String getSystemName() {
- return "MSO";
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientProvider.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientProvider.java
deleted file mode 100644
index 5959b0e6d9..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiClientProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.extclients.aai;
-
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class AaiClientProvider {
-
- @Bean
- public AAIResourcesClient getAaiClient() {
- return new AAIResourcesClient();
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java
deleted file mode 100644
index 4df2fa16e1..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.extclients.aai;
-
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrThirdpartySdncList;
-import org.onap.aai.domain.yang.ServiceInstance;
-
-public interface AaiServiceProvider {
-
- EsrThirdpartySdncList invokeGetThirdPartySdncList();
-
- EsrSystemInfoList invokeGetThirdPartySdncEsrSystemInfo(String sdncId);
-
- void invokeCreateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
- String serviceInstanceId);
-
- void invokeUpdateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
- String serviceInstanceId);
-
- ServiceInstance invokeGetServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
-
- void invokeDeleteServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java
deleted file mode 100644
index 688012efe7..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.extclients.aai;
-
-
-import org.onap.aai.domain.yang.EsrSystemInfoList;
-import org.onap.aai.domain.yang.EsrThirdpartySdncList;
-import org.onap.aai.domain.yang.ServiceInstance;
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class AaiServiceProviderImpl implements AaiServiceProvider {
-
- private static final Logger logger = LoggerFactory.getLogger(AaiServiceProviderImpl.class);
-
- private final AaiClientProvider aaiClientProvider;
-
- @Autowired
- public AaiServiceProviderImpl(final AaiClientProvider aaiClientProvider) {
- this.aaiClientProvider = aaiClientProvider;
- }
-
- @Override
- public EsrThirdpartySdncList invokeGetThirdPartySdncList() {
- return aaiClientProvider.getAaiClient()
- .get(EsrThirdpartySdncList.class,
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.externalSystem().esrThirdpartySdncList()))
- .orElseGet(() -> {
- logger.debug("No VNFMs in AAI");
- return null;
- });
- }
-
- @Override
- public EsrSystemInfoList invokeGetThirdPartySdncEsrSystemInfo(String sdncId) {
- return aaiClientProvider.getAaiClient()
- .get(EsrSystemInfoList.class,
- AAIUriFactory.createResourceUri(
- AAIFluentTypeBuilder.externalSystem().esrThirdpartySdnc((sdncId)).esrSystemInfoList()))
- .orElseGet(() -> {
- logger.debug("VNFM not found in AAI");
- return null;
- });
- }
-
-
- @Override
- public void invokeCreateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
- String serviceInstanceId) {
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
- .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
- aaiClientProvider.getAaiClient().create(uri, nssiInstance);
- }
-
- @Override
- public void invokeUpdateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
- String serviceInstanceId) {
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
- .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
- aaiClientProvider.getAaiClient().update(uri, nssiInstance);
- }
-
- @Override
- public ServiceInstance invokeGetServiceInstance(String globalSubscriberId, String serviceType,
- String serviceInstanceId) {
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
- .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
-
- return aaiClientProvider.getAaiClient().get(ServiceInstance.class, uri).orElseGet(() -> {
- logger.debug("ServiceInstance " + serviceInstanceId + " not found in AAI");
- return null;
- });
- }
-
- @Override
- public void invokeDeleteServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId) {
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
- .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
-
- aaiClientProvider.getAaiClient().delete(uri);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/LoggerInterceptor.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/LoggerInterceptor.java
deleted file mode 100644
index bca4a12d4b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/LoggerInterceptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.interceptor;
-
-import org.apache.logging.log4j.ThreadContext;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.UUID;
-
-@Component
-public class LoggerInterceptor implements HandlerInterceptor {
-
- private final static String TRACE_ID = "traceId";
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
- throws Exception {
- String traceId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
- ThreadContext.put(TRACE_ID, traceId);
- return true;
- }
-
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
- ModelAndView modelAndView) throws Exception {
-
- }
-
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
- throws Exception {
- ThreadContext.remove(TRACE_ID);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/RequestLogAspect.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/RequestLogAspect.java
deleted file mode 100644
index 95f26b4ad5..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/interceptor/RequestLogAspect.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.nssmf.interceptor;
-
-import lombok.Data;
-import lombok.ToString;
-import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.*;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.onap.so.adapters.nssmf.annotation.RequestLogger;
-import org.onap.so.adapters.nssmf.annotation.ServiceLogger;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.util.NssmfAdapterUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.springframework.web.multipart.MultipartFile;
-import javax.servlet.http.HttpServletRequest;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * support to print logger of service method
- */
-@Aspect
-@Order(100)
-@Component
-public class RequestLogAspect {
-
- private static final Logger logger = LoggerFactory.getLogger(RequestLogAspect.class);
-
- @Pointcut("execution(* org.onap.so.adapters.nssmf.service..*(..))")
- public void serviceLogger() {
-
- }
-
- @Around("serviceLogger()")
- public Object around(ProceedingJoinPoint joinPoint) {
- try {
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- Method method = signature.getMethod();
-
- Class<?> targetClass = method.getDeclaringClass();
-
- StringBuilder classAndMethod = new StringBuilder();
- ServiceLogger classAnnotation = targetClass.getAnnotation(ServiceLogger.class);
- ServiceLogger methodAnnotation = method.getAnnotation(ServiceLogger.class);
-
- if (classAnnotation == null && methodAnnotation == null) {
- return joinPoint.proceed();
- }
-
- if (classAnnotation != null) {
- if (classAnnotation.ignore()) {
- return joinPoint.proceed();
- }
- classAndMethod.append(classAnnotation.value()).append("-");
- }
-
- String target = targetClass.getName() + "#" + method.getName();
-
- String params = NssmfAdapterUtil.marshal(joinPoint.getArgs());
-
- logger.info("{} Start: Method = {} \nParams = {}", classAndMethod.toString(), target, params);
-
- long start = System.currentTimeMillis();
- Object result = joinPoint.proceed();
- long timeConsuming = System.currentTimeMillis() - start;
-
- logger.info("\n{} End: Method = {}, Spend time = {}ms \nResult = {}", classAndMethod.toString(), target,
- timeConsuming, NssmfAdapterUtil.marshal(result));
- return result;
-
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- @Pointcut("execution(* org.onap.so.adapters.nssmf.controller..*(..))")
- public void controllerLogger() {
-
- }
-
- @Around("controllerLogger()")
- public Object doAroundRequest(ProceedingJoinPoint point) throws Throwable {
- MethodSignature signature = (MethodSignature) point.getSignature();
- Method method = signature.getMethod();
- Class<?> targetClass = method.getDeclaringClass();
-
- RequestLogger classAnnotation = targetClass.getAnnotation(RequestLogger.class);
- RequestLogger methodAnnotation = method.getAnnotation(RequestLogger.class);
-
- if ((classAnnotation == null && methodAnnotation == null)
- || (classAnnotation != null && classAnnotation.ignore())
- || (methodAnnotation != null && methodAnnotation.ignore())) {
- return point.proceed();
- }
-
- long start = System.currentTimeMillis();
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-
- assert attributes != null;
- HttpServletRequest request = attributes.getRequest();
- Object result = point.proceed();
- RequestInfo requestInfo = new RequestInfo();
- requestInfo.setIp(request.getRemoteAddr());
- requestInfo.setUrl(request.getRequestURL().toString());
- requestInfo.setHttpMethod(request.getMethod());
- requestInfo.setClassMethod(String.format("%s.%s", signature.getDeclaringTypeName(), signature.getName()));
- requestInfo.setRequestParams(getRequestParamsByProceedingJoinPoint(point));
- requestInfo.setResult(result);
- requestInfo.setTimeCost(System.currentTimeMillis() - start);
- logger.info("Request Info : {}", NssmfAdapterUtil.marshal(requestInfo));
- return result;
- }
-
- @AfterThrowing(pointcut = "controllerLogger()", throwing = "e")
- public void doAfterRequestThrow(JoinPoint joinPoint, RuntimeException e) {
- MethodSignature signature = (MethodSignature) joinPoint.getSignature();
- Method method = signature.getMethod();
- Class<?> targetClass = method.getDeclaringClass();
-
- RequestLogger classAnnotation = targetClass.getAnnotation(RequestLogger.class);
- RequestLogger methodAnnotation = method.getAnnotation(RequestLogger.class);
-
- if ((classAnnotation == null && methodAnnotation == null)
- || (classAnnotation != null && classAnnotation.ignore())
- || (methodAnnotation != null && methodAnnotation.ignore())) {
- return;
- }
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- assert attributes != null;
- HttpServletRequest request = attributes.getRequest();
- RequestErrorInfo requestErrorInfo = new RequestErrorInfo();
- requestErrorInfo.setIp(request.getRemoteAddr());
- requestErrorInfo.setUrl(request.getRequestURL().toString());
- requestErrorInfo.setHttpMethod(request.getMethod());
- requestErrorInfo.setClassMethod(String.format("%s.%s", joinPoint.getSignature().getDeclaringTypeName(),
- joinPoint.getSignature().getName()));
- requestErrorInfo.setRequestParams(getRequestParamsByJoinPoint(joinPoint));
- requestErrorInfo.setException(e);
- String res;
- try {
- res = NssmfAdapterUtil.marshal(requestErrorInfo);
- logger.info("Error Request Info : {}", res);
- } catch (ApplicationException ex) {
- logger.info("Error Request Info : {}", requestErrorInfo);
- }
- }
-
- private Map<String, Object> getRequestParamsByJoinPoint(JoinPoint joinPoint) {
- String[] paramNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();
- Object[] paramValues = joinPoint.getArgs();
-
- return buildRequestParam(paramNames, paramValues);
- }
-
-
- private Map<String, Object> getRequestParamsByProceedingJoinPoint(ProceedingJoinPoint proceedingJoinPoint) {
- String[] paramNames = ((MethodSignature) proceedingJoinPoint.getSignature()).getParameterNames();
- Object[] paramValues = proceedingJoinPoint.getArgs();
-
- return buildRequestParam(paramNames, paramValues);
- }
-
- private Map<String, Object> buildRequestParam(String[] paramNames, Object[] paramValues) {
- Map<String, Object> requestParams = new HashMap<>();
- for (int i = 0; i < paramNames.length; i++) {
- Object value = paramValues[i];
-
- if (value instanceof MultipartFile) {
- MultipartFile file = (MultipartFile) value;
- value = file.getOriginalFilename();
- }
-
- requestParams.put(paramNames[i], value);
- }
-
- return requestParams;
- }
-
- @Data
- @ToString
- private class RequestInfo {
- private String ip;
- private String url;
- private String httpMethod;
- private String classMethod;
- private Object requestParams;
- private Object result;
- private Long timeCost;
- }
-
- @Data
- @ToString
- private class RequestErrorInfo {
- private String ip;
- private String url;
- private String httpMethod;
- private String classMethod;
- private Object requestParams;
- private RuntimeException exception;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManager.java
deleted file mode 100644
index 54ef1e09dd..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager;
-
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.beans.nsmf.*;
-
-public interface NssmfManager {
-
- RestResponse allocateNssi(NssmfAdapterNBIRequest nssmfRequest) throws ApplicationException;
-
- RestResponse deAllocateNssi(NssmfAdapterNBIRequest nssmfRequest, String sliceId) throws ApplicationException;
-
- RestResponse activateNssi(NssmfAdapterNBIRequest nssmfRequest, String snssai) throws ApplicationException;
-
- RestResponse deActivateNssi(NssmfAdapterNBIRequest nssmfRequest, String snssai) throws ApplicationException;
-
- RestResponse queryJobStatus(NssmfAdapterNBIRequest jobReq, String jobId) throws ApplicationException;
-
- RestResponse queryNSSISelectionCapability(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- RestResponse querySubnetCapability(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- RestResponse modifyNssi(NssmfAdapterNBIRequest modifyRequest) throws ApplicationException;
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManagerBuilder.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManagerBuilder.java
deleted file mode 100644
index e397201e4b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/NssmfManagerBuilder.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager;
-
-import org.onap.so.adapters.nssmf.config.NssmfAdapterConfig;
-import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.ExecutorType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.external.ExternalAnNssmfManager;
-import org.onap.so.adapters.nssmf.manager.impl.external.ExternalCnNssmfManager;
-import org.onap.so.adapters.nssmf.manager.impl.internal.InternalAnNssmfManager;
-import org.onap.so.adapters.nssmf.manager.impl.internal.InternalCnNssmfManager;
-import org.onap.so.adapters.nssmf.manager.impl.internal.InternalTnNssmfManager;
-import org.onap.so.adapters.nssmf.manager.impl.*;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.EsrInfo;
-import org.onap.so.beans.nsmf.NetworkType;
-import org.onap.so.beans.nsmf.ServiceInfo;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-
-public class NssmfManagerBuilder {
-
- private BaseNssmfManager nssmfManger;
-
- private RestUtil restUtil;
-
- private ActionType actionType;
-
- private ResourceOperationStatusRepository repository;
-
- private ServiceInfo serviceInfo;
-
- private NssmfAdapterConfig adapterConfig;
-
- public NssmfManagerBuilder(EsrInfo esrInfo) throws ApplicationException {
-
- ExecutorType executorType = getExecutorType(esrInfo);
- NetworkType networkType = esrInfo.getNetworkType();
-
- if (ExecutorType.INTERNAL.equals(executorType) && NetworkType.CORE.equals(networkType)) {
- this.nssmfManger = new InternalCnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType);
- return;
- }
-
- if (ExecutorType.INTERNAL.equals(executorType) && NetworkType.TRANSPORT.equals(networkType)) {
- this.nssmfManger = new InternalTnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType);
- return;
- }
-
- if (ExecutorType.INTERNAL.equals(executorType) && NetworkType.ACCESS.equals(networkType)) {
- this.nssmfManger = new InternalAnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType);
- return;
- }
-
- if (ExecutorType.EXTERNAL.equals(executorType) && NetworkType.CORE.equals(networkType)) {
- this.nssmfManger = new ExternalCnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType)
- .setInitStatus("deactivated");
- return;
- }
-
- if (ExecutorType.EXTERNAL.equals(executorType) && NetworkType.TRANSPORT.equals(networkType)) {
- this.nssmfManger = new ExternalAnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType)
- .setInitStatus("activated");
- return;
- }
-
- if (ExecutorType.EXTERNAL.equals(executorType) && NetworkType.ACCESS.equals(networkType)) {
- this.nssmfManger = new ExternalAnNssmfManager().setEsrInfo(esrInfo).setExecutorType(executorType)
- .setInitStatus("activated");
- return;
- }
-
- throw new ApplicationException(404, "invalid domain and simulator");
- }
-
- private ExecutorType getExecutorType(EsrInfo esrInfo) {
- if (NssmfAdapterConsts.ONAP_INTERNAL_TAG.equals(esrInfo.getVendor())) {
- return ExecutorType.INTERNAL;
- }
- return ExecutorType.EXTERNAL;
- }
-
- public NssmfManagerBuilder setRestUtil(RestUtil restUtil) {
- this.restUtil = restUtil;
- return this;
- }
-
- public NssmfManagerBuilder setActionType(ActionType actionType) {
- this.actionType = actionType;
- return this;
- }
-
- public NssmfManagerBuilder setRepository(ResourceOperationStatusRepository repository) {
- this.repository = repository;
- return this;
- }
-
- public NssmfManagerBuilder setServiceInfo(ServiceInfo serviceInfo) {
- this.serviceInfo = serviceInfo;
- return this;
- }
-
- public NssmfManagerBuilder setAdapterConfig(NssmfAdapterConfig adapterConfig) {
- this.adapterConfig = adapterConfig;
- return this;
- }
-
- public NssmfManager build() {
- return this.nssmfManger.setRestUtil(restUtil).setAdapterConfig(adapterConfig).setRepository(repository)
- .setActionType(actionType).setServiceInfo(serviceInfo);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/BaseNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/BaseNssmfManager.java
deleted file mode 100644
index 0456c90fae..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/BaseNssmfManager.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl;
-
-import org.onap.so.adapters.nssmf.config.NssmfAdapterConfig;
-import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
-import org.onap.so.adapters.nssmf.entity.NssmfUrlInfo;
-import org.onap.so.adapters.nssmf.enums.*;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.manager.NssmfManager;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.*;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.data.domain.Example;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public abstract class BaseNssmfManager implements NssmfManager {
-
- private static final Logger logger = LoggerFactory.getLogger(BaseNssmfManager.class);
-
- protected RestUtil restUtil;
-
- protected ResourceOperationStatusRepository repository;
-
- protected NssmfAdapterConfig adapterConfig;
-
- protected ActionType actionType;
-
- protected EsrInfo esrInfo;
-
- protected String nssmfUrl;
-
- protected HttpMethod httpMethod;
-
- protected String initStatus;
-
- protected ServiceInfo serviceInfo;
-
- protected RestResponse restResponse;
-
- private ExecutorType executorType = ExecutorType.INTERNAL;
-
- private Map<String, String> params = new HashMap<>(); // request params
-
- @Override
- public RestResponse allocateNssi(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
-
- this.params.clear();
- this.urlHandler();
- String requestBody = wrapAllocateReqBody(nbiRequest);
-
- this.restResponse = sendRequest(requestBody);
-
- this.afterRequest();
-
- return restResponse;
- }
-
- protected abstract String wrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- public RestResponse modifyNssi(NssmfAdapterNBIRequest modifyRequest) throws ApplicationException {
- this.params.clear();
- this.urlHandler();
- String requestBody = wrapModifyReqBody(modifyRequest);
-
- this.restResponse = sendRequest(requestBody);
-
- this.afterRequest();
-
- return restResponse;
- }
-
- protected abstract String wrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- public RestResponse deAllocateNssi(NssmfAdapterNBIRequest nbiRequest, String sliceId) throws ApplicationException {
- this.params.clear();
- this.params.put("sliceProfileId", sliceId);
-
- this.urlHandler();
-
- String reqBody = wrapDeAllocateReqBody(nbiRequest.getDeAllocateNssi());
-
- this.restResponse = sendRequest(reqBody);
-
- this.afterRequest();
-
- return restResponse;
- }
-
- protected abstract String wrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException;
-
- protected abstract String wrapReqBody(Object object) throws ApplicationException;
-
- @Override
- public RestResponse activateNssi(NssmfAdapterNBIRequest nbiRequest, String snssai) throws ApplicationException {
- this.params.clear();
- this.params.put("snssai", snssai);
-
- this.urlHandler();
-
- String reqBody = wrapActDeActReqBody(nbiRequest.getActDeActNssi());
-
- this.restResponse = sendRequest(reqBody);
-
- this.afterRequest();
-
- return restResponse;
- }
-
- @Override
- public RestResponse deActivateNssi(NssmfAdapterNBIRequest nbiRequest, String snssai) throws ApplicationException {
- return activateNssi(nbiRequest, snssai);
- }
-
- protected abstract String wrapActDeActReqBody(ActDeActNssi actDeActNssi) throws ApplicationException;
-
- @Override
- public RestResponse queryJobStatus(NssmfAdapterNBIRequest jobReq, String jobId) throws ApplicationException {
- this.params.clear();
- this.params.put("jobId", jobId);
- if (jobReq.getResponseId() != null) {
- this.params.put("responseId", jobReq.getResponseId());
- }
- this.urlHandler();
-
- /**
- * find by jobId and nsiId jobId -> OperationId nsiId -> ServiceId serviceUuid -> resourceTemplateUUID
- */
- ResourceOperationStatus status =
- getOperationStatus(serviceInfo.getNsiId(), jobId, serviceInfo.getServiceUuid());
-
- logger.info("ResourceOperationStatus = {}", status);
- this.restResponse = doQueryJobStatus(status);
-
- afterQueryJobStatus(status);
- return restResponse;
- }
-
- protected abstract RestResponse doQueryJobStatus(ResourceOperationStatus status) throws ApplicationException;
-
-
- protected abstract void afterQueryJobStatus(ResourceOperationStatus status);
-
- private ResourceOperationStatus getOperationStatus(String nsiId, String jobId, String serviceUuid) {
-
- logger.info("Query operations: nsiId = [{}], jobId = [{}], serviceUuid = [{}]", nsiId, jobId, serviceUuid);
-
- List<ResourceOperationStatus> resourceOperationStatuses =
- repository.findByServiceIdAndOperationId(nsiId, jobId);
-
- logger.info("resourceOperationStatuses = {}", resourceOperationStatuses);
- if (resourceOperationStatuses.size() == 0) {
- return null;
- }
- return resourceOperationStatuses.get(0);
- }
-
- @Override
- public RestResponse queryNSSISelectionCapability(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- SelectionType res = doQueryNSSISelectionCapability();
- HashMap<String, String> hashMap = new HashMap<>();
- hashMap.put("selection", res.name());
- RestResponse restResponse = new RestResponse();
- restResponse.setStatus(200);
- restResponse.setResponseContent(marshal(hashMap));
- return restResponse;
- }
-
- protected abstract SelectionType doQueryNSSISelectionCapability();
-
- @Override
- public RestResponse querySubnetCapability(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- this.params.clear();
- this.urlHandler();
-
- return doQuerySubnetCapability(nbiRequest.getSubnetCapabilityQuery());
- }
-
- protected abstract RestResponse doQuerySubnetCapability(QuerySubnetCapability req) throws ApplicationException;
-
- /**
- * send request to nssmf
- *
- * @param content request body
- * @return response
- * @throws ApplicationException
- */
- protected abstract RestResponse sendRequest(String content) throws ApplicationException;
-
- /**
- * handle the url before request to nssmf, include get the nssmf request url, replace the path variable
- */
- private void urlHandler() {
- NssmfUrlInfo nssmfUrlInfo =
- NssmfAdapterConsts.getNssmfUrlInfo(this.executorType, this.esrInfo.getNetworkType(), actionType);
- if (nssmfUrlInfo != null) {
- this.nssmfUrl = nssmfUrlInfo.getUrl();
- this.httpMethod = nssmfUrlInfo.getHttpMethod();
- this.nssmfUrl = nssmfUrl.replaceAll("\\{apiVersion}", getApiVersion());
- this.params.forEach((k, v) -> this.nssmfUrl = this.nssmfUrl.replaceAll("\\{" + k + "}", v));
- }
- }
-
- /**
- * after request
- */
- protected abstract void afterRequest() throws ApplicationException;
-
- protected abstract String getApiVersion();
-
- public RestUtil getRestUtil() {
- return restUtil;
- }
-
- public BaseNssmfManager setEsrInfo(EsrInfo esrInfo) {
- this.esrInfo = esrInfo;
- return this;
- }
-
- public BaseNssmfManager setExecutorType(ExecutorType executorType) {
- this.executorType = executorType;
- return this;
- }
-
- public BaseNssmfManager setRestUtil(RestUtil restUtil) {
- this.restUtil = restUtil;
- return this;
- }
-
- public BaseNssmfManager setActionType(ActionType actionType) {
- this.actionType = actionType;
- return this;
- }
-
- public BaseNssmfManager setRepository(ResourceOperationStatusRepository repository) {
- this.repository = repository;
- return this;
- }
-
- public BaseNssmfManager setServiceInfo(ServiceInfo serviceInfo) {
- this.serviceInfo = serviceInfo;
- return this;
- }
-
- public BaseNssmfManager setInitStatus(String initStatus) {
- this.initStatus = initStatus;
- return this;
- }
-
- public BaseNssmfManager setAdapterConfig(NssmfAdapterConfig adapterConfig) {
- this.adapterConfig = adapterConfig;
- return this;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java
deleted file mode 100644
index 7c4bd50852..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.http.Header;
-import org.apache.http.HttpStatus;
-import org.apache.http.message.BasicHeader;
-import org.onap.aai.domain.yang.ServiceInstance;
-import org.onap.so.adapters.nssmf.entity.NssmfInfo;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.JobStatus;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.util.NssmfAdapterUtil;
-import org.onap.so.beans.nsmf.*;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import static java.lang.String.valueOf;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.*;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_FAILED;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-
-public abstract class ExternalNssmfManager extends BaseNssmfManager {
-
- private static final Logger logger = LoggerFactory.getLogger(ExternalNssmfManager.class);
-
- @Override
- protected String wrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return doWrapExtAllocateReqBody(nbiRequest);
- }
-
- protected abstract String doWrapExtAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- protected String wrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return doWrapModifyReqBody(nbiRequest);
- }
-
- protected abstract String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- protected String wrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException {
- return doWrapDeAllocateReqBody(deAllocateNssi);
- }
-
- protected abstract String doWrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException;
-
- @Override
- protected void afterQueryJobStatus(ResourceOperationStatus status) {
- logger.info("afterQueryJobStatus = " + status);
- if (Integer.parseInt(status.getProgress()) == 100) {
- logger.info("after query finished = " + status);
- ActionType jobOperType = ActionType.valueOf(status.getOperType());
-
- if (ActionType.ALLOCATE.equals(jobOperType)) {
- ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
- if (nssiInstance == null) {
- nssiInstance = new ServiceInstance();
- }
-
- nssiInstance.setServiceInstanceId(serviceInfo.getNssiId());
- nssiInstance.setServiceInstanceName(serviceInfo.getNssiName());
- nssiInstance.setServiceType(serviceInfo.getSST());
-
- nssiInstance.setOrchestrationStatus(initStatus);
- nssiInstance.setModelInvariantId(serviceInfo.getServiceInvariantUuid());
- nssiInstance.setModelVersionId(serviceInfo.getServiceUuid());
- nssiInstance.setServiceInstanceLocationId(serviceInfo.getPLMNIdList());
- nssiInstance.setEnvironmentContext(esrInfo.getNetworkType().getNetworkType());
- nssiInstance.setServiceRole("nssi");
-
- restUtil.createServiceInstance(nssiInstance, serviceInfo);
- } else if (ActionType.DEALLOCATE.equals(jobOperType)) {
- // TODO
- restUtil.deleteServiceInstance(serviceInfo);
- }
- }
- }
-
- @Override
- protected String wrapActDeActReqBody(ActDeActNssi actDeActNssi) throws ApplicationException {
- return marshal(actDeActNssi);
- }
-
- @Override
- protected RestResponse doQueryJobStatus(ResourceOperationStatus status) throws ApplicationException {
- return doResponseStatus(status);
- }
-
- private RestResponse doResponseStatus(ResourceOperationStatus status) throws ApplicationException {
- RestResponse restResponse = sendRequest(null);
- JobStatusResponse jobStatusResponse = unMarshal(restResponse.getResponseContent(), JobStatusResponse.class);
-
- ResponseDescriptor rspDesc = jobStatusResponse.getResponseDescriptor();
-
- logger.info("status = {}", status);
- rspDesc.setNssiId(status.getResourceInstanceID());
-
- jobStatusResponse.setResponseDescriptor(rspDesc);
- restResponse.setResponseContent(marshal(jobStatusResponse));
- updateRequestDbJobStatus(rspDesc, status, restResponse);
- return restResponse;
- }
-
- @Override
- protected String wrapReqBody(Object object) throws ApplicationException {
- return marshal(object);
- }
-
- @Override
- protected RestResponse sendRequest(String content) throws ApplicationException {
- return sendExternalRequest(content);
- }
-
- @Override
- protected String getApiVersion() {
- return "v1";
- }
-
-
- // external
- protected RestResponse sendExternalRequest(String content) throws ApplicationException {
- NssmfInfo nssmfInfo = restUtil.getNssmfHost(esrInfo);
- Header header = new BasicHeader("X-Auth-Token", restUtil.getToken(nssmfInfo));
- String nssmfUrl = nssmfInfo.getUrl() + this.nssmfUrl;
- return restUtil.send(nssmfUrl, this.httpMethod, content, header);
- }
-
- protected void updateRequestDbJobStatus(ResponseDescriptor rspDesc, ResourceOperationStatus status,
- RestResponse rsp) throws ApplicationException {
- status.setProgress(Integer.toString(rspDesc.getProgress()));
- switch (fromString(rspDesc.getStatus())) {
- case STARTED:
- updateDbStatus(status, rsp.getStatus(), STARTED, QUERY_JOB_STATUS_SUCCESS);
- break;
- case PROCESSING:
- updateDbStatus(status, rsp.getStatus(), PROCESSING, QUERY_JOB_STATUS_SUCCESS);
- break;
- case FINISHED:
- if (rspDesc.getProgress() == 100) {
- updateDbStatus(status, rsp.getStatus(), FINISHED, QUERY_JOB_STATUS_SUCCESS);
- }
- break;
- case ERROR:
- updateDbStatus(status, rsp.getStatus(), ERROR, QUERY_JOB_STATUS_FAILED);
- throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
- default:
- throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
- }
- }
-
- protected void updateDbStatus(ResourceOperationStatus status, int rspStatus, JobStatus jobStatus,
- String description) {
- status.setErrorCode(valueOf(rspStatus));
- status.setStatus(jobStatus.toString());
- status.setStatusDescription(description);
- repository.save(status);
- }
-
- @Override
- protected RestResponse doQuerySubnetCapability(QuerySubnetCapability req) throws ApplicationException {
-
- ObjectMapper oMapper = new ObjectMapper();
- InputStream inputStream = TypeReference.class.getResourceAsStream("/subnetCapability.json");
- Map subnetCapability = new HashMap<>();
- try {
- subnetCapability = oMapper.readValue(inputStream, Map.class);
- } catch (Exception e) {
- logger.debug("Exception while reading subnet capability value from json", e);
- }
- Map<String, Object> responseMap = new HashMap<>();
- List<String> subnetTypes = req.getSubnetTypes();
- for (String value : subnetTypes) {
- if (subnetCapability.containsKey(value)) {
- responseMap.put(value, subnetCapability.get(value));
- }
- }
- String response = null;
- try {
- response = oMapper.writeValueAsString(responseMap);
- } catch (JsonProcessingException e) {
- logger.debug("Exception while converting subnet capability object to String {}", e.getMessage());
- }
-
- RestResponse rsp = new RestResponse();
- rsp.setStatus(HttpStatus.SC_OK);
- rsp.setResponseContent(response);
- return rsp;
- }
-
- /**
- * after request, if response code is 2XX, continue handle, else return
- */
- @Override
- protected void afterRequest() throws ApplicationException {
- if (valueOf(restResponse.getStatus()).startsWith("2")) {
- doAfterRequest();
- }
- }
-
-
- protected void doAfterRequest() throws ApplicationException {
- //
- NssiResponse response = unMarshal(restResponse.getResponseContent(), NssiResponse.class);
- ResourceOperationStatus status =
- new ResourceOperationStatus(serviceInfo.getNsiId(), response.getJobId(), serviceInfo.getServiceUuid());
- status.setResourceInstanceID(response.getNssiId());
- status.setOperType(actionType.toString());
- status.setProgress("0");
-
- response.setStatus(STARTED.toString());
- restResponse.setResponseContent(marshal(response));
- updateDbStatus(status, restResponse.getStatus(), STARTED, NssmfAdapterUtil.getStatusDesc(actionType));
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/InternalNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/InternalNssmfManager.java
deleted file mode 100644
index 64ab199bc1..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/InternalNssmfManager.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl;
-
-import org.apache.http.Header;
-import org.apache.http.message.BasicHeader;
-import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.enums.SelectionType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.beans.nsmf.*;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.PROCESSING;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public abstract class InternalNssmfManager extends BaseNssmfManager {
-
- @Override
- protected String wrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return doWrapAllocateReqBody(nbiRequest);
- }
-
- protected abstract String doWrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- protected String wrapReqBody(Object object) throws ApplicationException {
- NssmfRequest nssmfRequest = new NssmfRequest(serviceInfo, esrInfo.getNetworkType(), object);
- return marshal(nssmfRequest);
- }
-
-
- @Override
- protected String wrapActDeActReqBody(ActDeActNssi actDeActNssi) throws ApplicationException {
-
- return wrapReqBody(actDeActNssi);
- }
-
-
- @Override
- protected String wrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException {
- return wrapReqBody(deAllocateNssi);
- }
-
-
- @Override
- protected RestResponse doQueryJobStatus(ResourceOperationStatus status) throws ApplicationException {
- return responseDBStatus(status);
- }
-
- private RestResponse responseDBStatus(ResourceOperationStatus status) throws ApplicationException {
- JobStatusResponse statusResponse = new JobStatusResponse();
- ResponseDescriptor descriptor = new ResponseDescriptor();
- if (status == null) {
- descriptor.setProgress(0);
- descriptor.setStatus(PROCESSING.name());
- descriptor.setStatusDescription("Initiating Nssi Instance");
- } else {
- descriptor.setStatus(status.getStatus());
- descriptor.setStatusDescription(status.getStatusDescription());
- descriptor.setProgress(Integer.parseInt(status.getProgress()));
- descriptor.setNssiId(status.getResourceInstanceID());
- }
- statusResponse.setResponseDescriptor(descriptor);
- return restUtil.createResponse(200, marshal(statusResponse));
- }
-
- @Override
- protected RestResponse sendRequest(String content) {
- return sendInternalRequest(content);
- }
-
- @Override
- protected void afterRequest() {
- //
- }
-
- @Override
- protected void afterQueryJobStatus(ResourceOperationStatus status) {
- // internal
- }
-
- // internal
- private RestResponse sendInternalRequest(String content) {
- Header header = new BasicHeader("Authorization", adapterConfig.getInfraAuth());
- this.nssmfUrl = adapterConfig.getInfraEndpoint() + this.nssmfUrl;
- return restUtil.send(this.nssmfUrl, this.httpMethod, content, header);
- }
-
- @Override
- protected String getApiVersion() {
- return NssmfAdapterConsts.CURRENT_INTERNAL_NSSMF_API_VERSION;
- }
-
-
- @Override
- protected SelectionType doQueryNSSISelectionCapability() {
- return SelectionType.NSSMF;
- }
-
- @Override
- protected String wrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return doWrapModifyReqBody(nbiRequest);
- }
-
- protected abstract String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException;
-
- @Override
- protected RestResponse doQuerySubnetCapability(QuerySubnetCapability req) throws ApplicationException {
- // handler
- return sendRequest(marshal(req));
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java
deleted file mode 100644
index 1af6d15c06..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.external;
-
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.JobStatus;
-import org.onap.so.adapters.nssmf.enums.SelectionType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.ExternalNssmfManager;
-import org.onap.so.adapters.nssmf.util.NssmfAdapterUtil;
-import org.onap.so.beans.nsmf.AnSliceProfile;
-import org.onap.so.beans.nsmf.DeAllocateNssi;
-import org.onap.so.beans.nsmf.NssiResponse;
-import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest;
-import org.onap.so.beans.nsmf.ResponseDescriptor;
-import org.onap.so.beans.nsmf.JobStatusResponse;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-
-
-public class ExternalAnNssmfManager extends ExternalNssmfManager {
-
- /**
- * request body params
- */
- private Map<String, String> bodyParams = new HashMap<>();
-
- @Override
- protected String doWrapExtAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- Map<String, Object> request = new HashMap<>();
-
- AnSliceProfile anSliceProfile = nbiRequest.getAllocateAnNssi().getSliceProfile();
-
- RanSliceProfile ranSliceProfile = new RanSliceProfile();
- ranSliceProfile.setSliceProfileId(anSliceProfile.getSliceProfileId());
- ranSliceProfile.setSNSSAIList(anSliceProfile.getSNSSAIList());
- ranSliceProfile.setPLMNIdList(anSliceProfile.getPLMNIdList());
- ranSliceProfile.setPerfReq(anSliceProfile.getPerfReq());
- ranSliceProfile.setMaxNumberofUEs(anSliceProfile.getMaxNumberOfUEs());
- ranSliceProfile.setCoverageAreaTAList(anSliceProfile.getCoverageAreaTAList());
- ranSliceProfile.setLatency(anSliceProfile.getLatency());
- ranSliceProfile.setUEMobilityLevel(anSliceProfile.getUeMobilityLevel());
- ranSliceProfile.setResourceSharingLevel(anSliceProfile.getResourceSharingLevel());
-
- request.put("attributeListIn", ranSliceProfile);
- return marshal(request);
- }
-
- @Override
- protected void doAfterRequest() throws ApplicationException {
- if (ActionType.ALLOCATE.equals(actionType) || ActionType.DEALLOCATE.equals(actionType)) {
- String nssiId;
- if (ActionType.ALLOCATE.equals(actionType)) {
- @SuppressWarnings("unchecked")
- Map<String, String> response = unMarshal(restResponse.getResponseContent(), Map.class);
- nssiId = response.get("href");
- } else {
- nssiId = this.bodyParams.get("nssiId");
- }
-
- NssiResponse resp = new NssiResponse();
- resp.setJobId(UUID.randomUUID().toString());
- resp.setNssiId(nssiId);
-
- RestResponse returnRsp = new RestResponse();
-
- returnRsp.setStatus(202);
- returnRsp.setResponseContent(marshal(resp));
- restResponse = returnRsp;
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(serviceInfo.getNsiId(), resp.getJobId(), serviceInfo.getServiceUuid());
- status.setResourceInstanceID(nssiId);
- status.setOperType(actionType.toString());
-
- updateDbStatus(status, restResponse.getStatus(), JobStatus.STARTED,
- NssmfAdapterUtil.getStatusDesc(actionType));
- }
- // todo
- }
-
- @Override
- protected String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- // TODO
- return null;
- }
-
- @Override
- protected String doWrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException {
- this.bodyParams.clear();
- this.bodyParams.put("nssiId", deAllocateNssi.getNssiId());
-
- Map<String, String> request = new HashMap<>();
- request.put("nSSId", deAllocateNssi.getNssiId());
- return marshal(request);
- }
-
-
- @Override
- public RestResponse modifyNssi(NssmfAdapterNBIRequest modifyRequest) throws ApplicationException {
- // TODO
- return null;
- }
-
- @Override
- public RestResponse activateNssi(NssmfAdapterNBIRequest nbiRequest, String snssai) throws ApplicationException {
- // TODO
- NssiResponse resp = new NssiResponse();
- String nssiId = nbiRequest.getActDeActNssi().getNssiId();
- resp.setJobId(UUID.randomUUID().toString());
- resp.setNssiId(nssiId);
-
- RestResponse returnRsp = new RestResponse();
-
- returnRsp.setStatus(202);
- returnRsp.setResponseContent(marshal(resp));
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(serviceInfo.getNsiId(), resp.getJobId(), serviceInfo.getServiceUuid());
- status.setResourceInstanceID(nssiId);
- status.setOperType(actionType.toString());
-
- updateDbStatus(status, returnRsp.getStatus(), JobStatus.FINISHED, NssmfAdapterUtil.getStatusDesc(actionType));
- return returnRsp;
- }
-
- @Override
- protected RestResponse doQueryJobStatus(ResourceOperationStatus status) throws ApplicationException {
- ResponseDescriptor responseDescriptor = new ResponseDescriptor();
- responseDescriptor.setStatus(JobStatus.FINISHED.toString());
- responseDescriptor.setProgress(100);
- responseDescriptor.setStatusDescription("Finished");
-
- JobStatusResponse jobStatusResponse = new JobStatusResponse();
- jobStatusResponse.setResponseDescriptor(responseDescriptor);
-
- RestResponse restResponse = new RestResponse();
- restResponse.setStatus(200);
- restResponse.setResponseContent(marshal(jobStatusResponse));
-
- updateRequestDbJobStatus(responseDescriptor, status, restResponse);
-
- status.setProgress(Integer.toString(responseDescriptor.getProgress()));
-
- return restResponse;
- }
-
- @Override
- protected SelectionType doQueryNSSISelectionCapability() {
- return SelectionType.NSSMF;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalCnNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalCnNssmfManager.java
deleted file mode 100644
index 08c464e46b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalCnNssmfManager.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.external;
-
-import org.onap.aai.domain.yang.ServiceInstance;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.SelectionType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.ExternalNssmfManager;
-import org.onap.so.beans.nsmf.DeAllocateNssi;
-import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public class ExternalCnNssmfManager extends ExternalNssmfManager {
-
- @Override
- protected String doWrapExtAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return marshal(nbiRequest.getAllocateCnNssi());
- }
-
- @Override
- protected String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- return marshal(nbiRequest.getAllocateCnNssi());
- }
-
- @Override
- protected String doWrapDeAllocateReqBody(DeAllocateNssi deAllocateNssi) throws ApplicationException {
- return marshal(deAllocateNssi);
- }
-
- @Override
- protected void afterQueryJobStatus(ResourceOperationStatus status) {
- super.afterQueryJobStatus(status);
- ActionType jobOperType = ActionType.valueOf(status.getOperType());
- if (Integer.parseInt(status.getProgress()) == 100) {
- if (ActionType.ACTIVATE.equals(jobOperType)) {
- ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
- nssiInstance.setOrchestrationStatus("activated");
- restUtil.updateServiceInstance(nssiInstance, serviceInfo);
- } else if (ActionType.DEACTIVATE.equals(jobOperType)) {
- ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
- nssiInstance.setOrchestrationStatus("deactivated");
- restUtil.updateServiceInstance(nssiInstance, serviceInfo);
- }
- }
- }
-
- @Override
- protected SelectionType doQueryNSSISelectionCapability() {
-
- return SelectionType.NSMF;
- }
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/RanSliceProfile.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/RanSliceProfile.java
deleted file mode 100644
index 7035456d75..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/RanSliceProfile.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.external;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import java.io.Serializable;
-import java.util.List;
-import org.onap.so.beans.nsmf.PerfReq;
-import org.onap.so.beans.nsmf.UeMobilityLevel;
-import org.onap.so.beans.nsmf.ResourceSharingLevel;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-@Data
-public class RanSliceProfile implements Serializable {
- /*
- * Reference 3GPP TS 28.541 V16.5.0, Section 6.3.4.
- */
-
- private static final long serialVersionUID = 172447042469370448L;
-
- @JsonProperty(value = "sliceProfileId", required = true)
- private String sliceProfileId;
-
- @JsonProperty(value = "sNSSAIList", required = true)
- private List<String> sNSSAIList;
-
- @JsonProperty(value = "pLMNIdList", required = true)
- private List<String> pLMNIdList;
-
- @JsonProperty(value = "perfReq", required = true)
- private PerfReq perfReq;
-
- @JsonInclude(JsonInclude.Include.NON_DEFAULT)
- @JsonProperty(value = "maxNumberofUEs")
- private long maxNumberofUEs;
-
- @JsonProperty(value = "coverageAreaTAList")
- private List<Integer> coverageAreaTAList;
-
- @JsonInclude(JsonInclude.Include.NON_DEFAULT)
- @JsonProperty(value = "latency")
- private int latency;
-
- @JsonProperty(value = "uEMobilityLevel")
- private UeMobilityLevel uEMobilityLevel;
-
- @JsonProperty(value = "resourceSharingLevel")
- private ResourceSharingLevel resourceSharingLevel;
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalAnNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalAnNssmfManager.java
deleted file mode 100644
index dc6528381b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalAnNssmfManager.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.internal;
-
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.InternalNssmfManager;
-import org.onap.so.beans.nsmf.*;
-import java.util.HashMap;
-import java.util.Map;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-
-public class InternalAnNssmfManager extends InternalNssmfManager {
-
- @Override
- protected String doWrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- NssmfRequest request =
- new NssmfRequest(serviceInfo, nbiRequest.getEsrInfo().getNetworkType(), nbiRequest.getAllocateAnNssi());
- request.setName(nbiRequest.getAllocateAnNssi().getNssiName());
- return marshal(request);
- }
-
- @Override
- protected String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- AllocateAnNssi allocateAnNssi = nbiRequest.getAllocateAnNssi();
- AnSliceProfile sliceProfile = allocateAnNssi.getSliceProfile();
- Map<String, Object> additional = new HashMap<>();
- additional.put("modifyAction", "allocate");
- additional.put("snssaiList", sliceProfile.getSNSSAIList());
- additional.put("sliceProfileId", sliceProfile.getSliceProfileId());
- additional.put("nsiInfo", allocateAnNssi.getNsiInfo());
- additional.put("scriptName", allocateAnNssi.getScriptName());
- NssmfRequest request = new NssmfRequest(serviceInfo, esrInfo.getNetworkType(), additional);
- return marshal(request);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalCnNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalCnNssmfManager.java
deleted file mode 100644
index 4a93b3007c..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalCnNssmfManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.internal;
-
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.InternalNssmfManager;
-import org.onap.so.beans.nsmf.*;
-import java.util.HashMap;
-import java.util.Map;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public class InternalCnNssmfManager extends InternalNssmfManager {
-
- @Override
- protected String doWrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
-
- NssmfRequest request =
- new NssmfRequest(serviceInfo, nbiRequest.getEsrInfo().getNetworkType(), nbiRequest.getAllocateCnNssi());
- request.setName(nbiRequest.getAllocateCnNssi().getNssiName());
- return marshal(request);
- }
-
- @Override
- protected String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- AllocateCnNssi allocateCnNssi = nbiRequest.getAllocateCnNssi();
- CnSliceProfile cnSliceProfile = allocateCnNssi.getSliceProfile();
- Map<String, Object> additional = new HashMap<>();
- additional.put("modifyAction", "allocate");
- additional.put("nsiInfo", allocateCnNssi.getNsiInfo());
- additional.put("scriptName", allocateCnNssi.getScriptName());
- additional.put("snssaiList", cnSliceProfile.getSnssaiList());
- additional.put("sliceProfileId", cnSliceProfile.getSliceProfileId());
-
- NssmfRequest request = new NssmfRequest(serviceInfo, esrInfo.getNetworkType(), additional);
- return marshal(request);
- }
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalTnNssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalTnNssmfManager.java
deleted file mode 100644
index 1b4a9e9fca..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/internal/InternalTnNssmfManager.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.manager.impl.internal;
-
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.impl.InternalNssmfManager;
-import org.onap.so.beans.nsmf.*;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-
-public class InternalTnNssmfManager extends InternalNssmfManager {
-
- @Override
- protected String doWrapAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
-
- return marshal(new NssmfRequest(serviceInfo, nbiRequest.getEsrInfo().getNetworkType(),
- nbiRequest.getAllocateTnNssi()));
- }
-
- @Override
- protected String doWrapModifyReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
- // TODO
- return doWrapAllocateReqBody(nbiRequest);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java
deleted file mode 100644
index 4fdcbf110f..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.rest;
-
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.beans.nsmf.JobStatusRequest;
-import org.onap.so.beans.nsmf.NssiActDeActRequest;
-import org.onap.so.beans.nsmf.NssiAllocateRequest;
-import org.onap.so.beans.nsmf.NssiCreateRequest;
-import org.onap.so.beans.nsmf.NssiDeAllocateRequest;
-import org.onap.so.beans.nsmf.NssiTerminateRequest;
-import org.onap.so.beans.nsmf.NssiUpdateRequest;
-import org.onap.so.beans.nsmf.NssiUpdateRequestById;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.assertObjectNotNull;
-
-@Deprecated
-@Controller
-@RequestMapping(value = "/api/rest/provMns/v1", produces = {APPLICATION_JSON}, consumes = {APPLICATION_JSON})
-public class NssmfAdapterRest {
-
- private static final Logger logger = LoggerFactory.getLogger(NssmfAdapterRest.class);
-
- @Autowired
- private NssmfManager nssmfMgr;
-
-
- @PostMapping(value = "/NSS/nssi")
- public ResponseEntity createNssi(@RequestBody NssiCreateRequest create) {
- try {
- logger.info("Nssmf create request is invoked");
- assertObjectNotNull(create);
- RestResponse rsp = getNssmfMgr().createNssi(create);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @PostMapping(value = "/NSS/nssi/{nssiId}")
- public ResponseEntity terminateNssi(@RequestBody NssiTerminateRequest terminate,
- @PathVariable("nssiId") String nssiId) {
- try {
- logger.info("Nssmf terminate request is invoked");
- assertObjectNotNull(terminate);
- RestResponse rsp = getNssmfMgr().terminateNssi(terminate, nssiId);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @PutMapping(value = "/NSS/SliceProfiles/{sliceProfileId}")
- public ResponseEntity modifyNssi(@RequestBody NssiUpdateRequest update,
- @PathVariable("sliceProfileId") String sliceId) {
- try {
- logger.info("Nssmf modify request is invoked");
- assertObjectNotNull(update);
- RestResponse rsp = getNssmfMgr().updateNssi(update, sliceId);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @PutMapping(value = "/NSS/nssi/{nssiId}")
- public ResponseEntity modifyNssiById(@RequestBody NssiUpdateRequestById updateById,
- @PathVariable("nssiId") String nssiId) {
- try {
- logger.info("Nssmf modify by ID request is invoked");
- assertObjectNotNull(updateById);
- RestResponse rsp = getNssmfMgr().updateNssiById(updateById, nssiId);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
-
- @GetMapping(value = "/vendor/{vendorName}/type/{networkType}/NSS" + "/SliceProfiles/{sliceProfileId}")
- public ResponseEntity queryNssi(@PathVariable("vendorName") String vendorName,
- @PathVariable("networktype") String networkType, @PathVariable("sliceProfileId") String sliceId) {
- try {
- logger.info("Nssmf query nssi request is invoked");
- RestResponse rsp = getNssmfMgr().queryNssi(vendorName, networkType, sliceId);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @GetMapping(value = "/vendor/{vendorName}/type/{networkType}/NSS/nssi" + "/{nssiId}")
- public ResponseEntity queryNssiById(@PathVariable("vendorName") String vendorName,
- @PathVariable("networkTtype") String networkType, @PathVariable("nssiId") String nssiId) {
- try {
- logger.info("Nssmf query nssi by ID request is invoked");
- RestResponse rsp = getNssmfMgr().queryNssiById(vendorName, networkType, nssiId);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- public void setNssmfMgr(NssmfManager nssmfMgr) {
- this.nssmfMgr = nssmfMgr;
- }
-
- public NssmfManager getNssmfMgr() {
- return nssmfMgr;
- }
-
- private ResponseEntity buildResponse(RestResponse rsp) {
- return ResponseEntity.status(rsp.getStatus()).body(rsp.getResponseContent());
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java
deleted file mode 100644
index 2d0980f60e..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java
+++ /dev/null
@@ -1,549 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.rest;
-
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.enums.JobStatus;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.ActDeActNssi;
-import org.onap.so.beans.nsmf.AllocateAnNssi;
-import org.onap.so.beans.nsmf.AllocateCnNssi;
-import org.onap.so.beans.nsmf.AllocateTnNssi;
-import org.onap.so.beans.nsmf.CreateCnNssi;
-import org.onap.so.beans.nsmf.DeAllocateNssi;
-import org.onap.so.beans.nsmf.EsrInfo;
-import org.onap.so.beans.nsmf.JobStatusRequest;
-import org.onap.so.beans.nsmf.JobStatusResponse;
-import org.onap.so.beans.nsmf.NetworkType;
-import org.onap.so.beans.nsmf.NssiActDeActRequest;
-import org.onap.so.beans.nsmf.NssiAllocateRequest;
-import org.onap.so.beans.nsmf.NssiCreateRequest;
-import org.onap.so.beans.nsmf.NssiDeAllocateRequest;
-import org.onap.so.beans.nsmf.NssiResponse;
-import org.onap.so.beans.nsmf.NssiTerminateRequest;
-import org.onap.so.beans.nsmf.NssiUpdateRequest;
-import org.onap.so.beans.nsmf.NssiUpdateRequestById;
-import org.onap.so.beans.nsmf.ResponseDescriptor;
-import org.onap.so.beans.nsmf.TerminateNssi;
-import org.onap.so.beans.nsmf.UpdateCnNssi;
-import org.onap.so.beans.nsmf.UpdateCnNssiById;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.domain.Example;
-import org.springframework.stereotype.Component;
-import static java.lang.String.valueOf;
-import static org.onap.so.adapters.nssmf.enums.HttpMethod.DELETE;
-import static org.onap.so.adapters.nssmf.enums.HttpMethod.GET;
-import static org.onap.so.adapters.nssmf.enums.HttpMethod.POST;
-import static org.onap.so.adapters.nssmf.enums.HttpMethod.PUT;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.ERROR;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.FINISHED;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.PROCESSING;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.STARTED;
-import static org.onap.so.adapters.nssmf.enums.JobStatus.fromString;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.ACTIVATE_NSS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.ALLOCATE_NSS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.CREATE_NSS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.DEACTIVATE_NSS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.DEALLOCATE_NSS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_FAILED;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_SUCCESS;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.assertObjectNotNull;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-import static org.onap.so.beans.nsmf.ActDeActNssi.ACT_URL;
-import static org.onap.so.beans.nsmf.ActDeActNssi.DE_ACT_URL;
-
-@Component
-@Primary
-@Deprecated
-public class NssmfManager {
-
- private static final Logger logger = LoggerFactory.getLogger(NssmfManager.class);
-
- public final static String QUERY = "/api/rest/provMns/v1/NSS" + "/SliceProfiles/{sliceProfileId}";
-
- public final static String QUERY_BY_ID = "/api/rest/provMns/v1/NSS/nssi" + "/{nssiId}";
-
- @Autowired
- private ResourceOperationStatusRepository rscOperStatusRepo;
-
- @Autowired
- private RestUtil restUtil;
-
-
- public RestResponse allocateNssi(NssiAllocateRequest nssmiAllocate) throws ApplicationException {
-
- assertObjectNotNull(nssmiAllocate.getEsrInfo());
- assertObjectNotNull(nssmiAllocate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssmiAllocate.getEsrInfo().getVendor());
-
- String nsiId = null;
- String allocateReq = null;
- String allocateUrl = null;
- logger.info("Allocate Nssi for " + nssmiAllocate.getEsrInfo().getNetworkType() + " Network has begun");
-
- switch (nssmiAllocate.getEsrInfo().getNetworkType()) {
-
- case CORE:
- AllocateCnNssi cn = nssmiAllocate.getAllocateCnNssi();
- assertObjectNotNull(cn);
- assertObjectNotNull(cn.getNsiInfo());
- assertObjectNotNull(cn.getNsiInfo().getNsiId());
- nsiId = cn.getNsiInfo().getNsiId();
- assertObjectNotNull(nsiId);
- allocateReq = marshal(cn);
- allocateUrl = AllocateCnNssi.URL;
- break;
-
- case ACCESS:
- AllocateAnNssi an = nssmiAllocate.getAllocateAnNssi();
- assertObjectNotNull(an);
- assertObjectNotNull(an.getNsiInfo());
- assertObjectNotNull(an.getNsiInfo().getNsiId());
- nsiId = an.getNsiInfo().getNsiId();
- assertObjectNotNull(nsiId);
- allocateReq = marshal(an);
- allocateUrl = AllocateAnNssi.URL;
- break;
-
- case TRANSPORT:
- AllocateTnNssi tn = nssmiAllocate.getAllocateTnNssi();
- assertObjectNotNull(tn);
- // assertObjectNotNull(tn.getNsiInfo());
- // assertObjectNotNull(tn.getNsiInfo().getNsiId());
- // nsiId = tn.getNsiInfo().getNsiId();
- allocateReq = marshal(tn);
- // allocateUrl = AllocateTnNssi.URL;
- break;
-
- }
-
- RestResponse rsp = restUtil.sendRequest(allocateUrl, POST, allocateReq, nssmiAllocate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(allocateRes.getNssiId(), allocateRes.getJobId(), nsiId);
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
- logger.info("save segment and operation info -> end");
- }
- return rsp;
- }
-
-
-
- public RestResponse createNssi(NssiCreateRequest nssiCreate) throws ApplicationException {
-
- assertObjectNotNull(nssiCreate.getEsrInfo());
- assertObjectNotNull(nssiCreate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiCreate.getEsrInfo().getVendor());
-
- String nsiId = null;
- String createReq = null;
- String createUrl = null;
- logger.info("Create Nssi for " + nssiCreate.getEsrInfo().getNetworkType() + " Network has begun");
-
- switch (nssiCreate.getEsrInfo().getNetworkType()) {
- case CORE:
- CreateCnNssi cn = nssiCreate.getCreateCnNssi();
- nsiId = cn.getNsiInfo().getNsiId();
- assertObjectNotNull(nsiId);
- createReq = marshal(cn);
- createUrl = AllocateCnNssi.URL;
- break;
-
- case ACCESS:
- case TRANSPORT:
- throw new ApplicationException(1, "Create Nssi doesn't " + "support the Network type:"
- + nssiCreate.getEsrInfo().getNetworkType());
- }
- RestResponse rsp = restUtil.sendRequest(createUrl, POST, createReq, nssiCreate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(allocateRes.getNssiId(), allocateRes.getJobId(), nsiId);
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, CREATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- @Deprecated
- public RestResponse deAllocateNssi(NssiDeAllocateRequest nssiDeallocate, String sliceId)
- throws ApplicationException {
-
- assertObjectNotNull(nssiDeallocate.getEsrInfo());
- assertObjectNotNull(nssiDeallocate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiDeallocate.getEsrInfo().getVendor());
-
- DeAllocateNssi deAllocate = nssiDeallocate.getDeAllocateNssi();
-
- assertObjectNotNull(sliceId);
- assertObjectNotNull(deAllocate.getNssiId());
- assertObjectNotNull(deAllocate.getNsiId());
-
- String deallocateUrl = formTnAndAnUrl(nssiDeallocate.getEsrInfo(), DeAllocateNssi.URL, sliceId);
- String deAllocateReq = marshal(deAllocate);
-
- logger.info("Deallocate Nssi has begun");
-
- RestResponse rsp = restUtil.sendRequest(deallocateUrl, DELETE, deAllocateReq, nssiDeallocate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse res = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(deAllocate.getNssiId(), res.getJobId(), deAllocate.getNsiId());
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, DEALLOCATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- private String formTnAndAnUrl(EsrInfo esrInfo, String origUrl, String variable) {
-
- origUrl = formatUrl(origUrl, variable);
- String[] val;
-
- switch (esrInfo.getNetworkType()) {
-
- case TRANSPORT:
- val = origUrl.split("v1");
- return val[0] + "v1/tn" + val[1];
-
- case ACCESS:
- val = origUrl.split("v1");
- return val[0] + "v1/an" + val[1];
-
- case CORE:
- return origUrl;
- }
- return origUrl;
- }
-
- private String formatUrl(String origUrl, String variable) {
-
- if (variable != null) {
- origUrl = String.format(origUrl, variable);
- }
- return origUrl;
- }
-
-
- public RestResponse terminateNssi(NssiTerminateRequest nssiTerminate, String nssiId) throws ApplicationException {
-
- assertObjectNotNull(nssiTerminate.getEsrInfo());
- assertObjectNotNull(nssiTerminate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiTerminate.getEsrInfo().getVendor());
-
- TerminateNssi terminate = nssiTerminate.getTerminateNssi();
-
- assertObjectNotNull(nssiId);
- assertObjectNotNull(terminate.getNsiId());
-
- logger.info("Terminate Nssi has begun");
-
- String terminateUrl = formTnAndAnUrl(nssiTerminate.getEsrInfo(), TerminateNssi.URL, nssiId);
- String terminateReq = marshal(terminate);
-
- RestResponse rsp = restUtil.sendRequest(terminateUrl, DELETE, terminateReq, nssiTerminate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse res = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status = new ResourceOperationStatus(nssiId, res.getJobId(), terminate.getNsiId());
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, DEALLOCATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- public RestResponse activateNssi(NssiActDeActRequest nssiActivate, String snssai) throws ApplicationException {
-
- assertObjectNotNull(nssiActivate.getEsrInfo());
- assertObjectNotNull(nssiActivate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiActivate.getEsrInfo().getVendor());
-
- ActDeActNssi activate = nssiActivate.getActDeActNssi();
-
- assertObjectNotNull(snssai);
- assertObjectNotNull(activate.getNssiId());
- assertObjectNotNull(activate.getNsiId());
-
- logger.info("Activate Nssi has begun");
-
- String activateUrl = formTnAndAnUrl(nssiActivate.getEsrInfo(), ACT_URL, snssai);
- String activateReq = marshal(activate);
-
- RestResponse rsp = restUtil.sendRequest(activateUrl, PUT, activateReq, nssiActivate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse activateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status =
- new ResourceOperationStatus(activate.getNssiId(), activateRes.getJobId(), activate.getNsiId());
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, ACTIVATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- public RestResponse deActivateNssi(NssiActDeActRequest nssiDeActivate, String snssai) throws ApplicationException {
-
- assertObjectNotNull(nssiDeActivate.getEsrInfo());
- assertObjectNotNull(nssiDeActivate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiDeActivate.getEsrInfo().getVendor());
-
- logger.info("Deactivate Nssi has begun");
-
- ActDeActNssi deActivate = nssiDeActivate.getActDeActNssi();
-
- assertObjectNotNull(snssai);
- assertObjectNotNull(deActivate.getNssiId());
- assertObjectNotNull(deActivate.getNsiId());
-
- String deActivateUrl = formTnAndAnUrl(nssiDeActivate.getEsrInfo(), DE_ACT_URL, snssai);
- String deActivateReq = marshal(deActivate);
-
- RestResponse rsp = restUtil.sendRequest(deActivateUrl, PUT, deActivateReq, nssiDeActivate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse deActivateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status = new ResourceOperationStatus(deActivate.getNssiId(),
- deActivateRes.getJobId(), deActivate.getNsiId());
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, DEACTIVATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- public RestResponse queryJobStatus(JobStatusRequest jobReq, String jobId) throws ApplicationException {
-
- assertObjectNotNull(jobReq.getEsrInfo());
- assertObjectNotNull(jobReq.getEsrInfo().getNetworkType());
- assertObjectNotNull(jobReq.getEsrInfo().getVendor());
- assertObjectNotNull(jobId);
- assertObjectNotNull(jobReq.getNssiId());
- assertObjectNotNull(jobReq.getNsiId());
-
- logger.info("Query job status has begun");
-
- ResourceOperationStatus status = new ResourceOperationStatus(jobReq.getNssiId(), jobId, jobReq.getNsiId());
- status = rscOperStatusRepo.findOne(Example.of(status))
- .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
-
- String statusUrl = formatUrl(JobStatusRequest.URL, jobId);
- if (jobReq.getResponseId() != null) {
- statusUrl = statusUrl + "?responseId=" + jobReq.getResponseId();
- }
-
- RestResponse rsp = restUtil.sendRequest(statusUrl, GET, "", jobReq.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (!valueOf(rsp.getStatus()).startsWith("2")) {
- updateDbStatus(status, rsp.getStatus(), ERROR, QUERY_JOB_STATUS_FAILED);
- throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
- }
-
- ResponseDescriptor rspDesc =
- unMarshal(rsp.getResponseContent(), JobStatusResponse.class).getResponseDescriptor();
- logger.info("save segment and operaton info -> begin");
- updateRequestDbJobStatus(rspDesc, status, rsp);
- logger.info("save segment and operaton info -> end");
- return rsp;
- }
-
-
- public RestResponse updateNssi(NssiUpdateRequest nssiUpdate, String sliceId) throws ApplicationException {
-
- assertObjectNotNull(nssiUpdate.getEsrInfo());
- assertObjectNotNull(nssiUpdate.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiUpdate.getEsrInfo().getVendor());
- assertObjectNotNull(sliceId);
-
- String nsiId = null;
- String nssiId = null;
- String updateReq = null;
- String updateUrl = null;
- logger.info("Update Nssi for " + nssiUpdate.getEsrInfo().getNetworkType() + " Network has begun");
-
- switch (nssiUpdate.getEsrInfo().getNetworkType()) {
- case CORE:
- UpdateCnNssi cn = nssiUpdate.getUpdateCnNssi();
- nsiId = cn.getNsiInfo().getNsiId();
- nssiId = cn.getNssiId();
- assertObjectNotNull(nsiId);
- assertObjectNotNull(nssiId);
- updateReq = marshal(cn);
- updateUrl = formatUrl(UpdateCnNssi.URL, sliceId);
- break;
-
- case ACCESS:
- case TRANSPORT:
- throw new ApplicationException(1, "Update Nssi doesn't " + "support the Network type:"
- + nssiUpdate.getEsrInfo().getNetworkType());
- }
-
- RestResponse rsp = restUtil.sendRequest(updateUrl, PUT, updateReq, nssiUpdate.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status = new ResourceOperationStatus(nssiId, allocateRes.getJobId(), nsiId);
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- public RestResponse updateNssiById(NssiUpdateRequestById nssiUpdateById, String nssiId)
- throws ApplicationException {
-
- assertObjectNotNull(nssiUpdateById.getEsrInfo());
- assertObjectNotNull(nssiUpdateById.getEsrInfo().getNetworkType());
- assertObjectNotNull(nssiUpdateById.getEsrInfo().getVendor());
- assertObjectNotNull(nssiId);
-
- String nsiId = null;
- String updateReq = null;
- String updateUrl = null;
- logger.info("Update Nssi by ID for " + nssiUpdateById.getEsrInfo().getNetworkType() + " Network has begun");
-
- switch (nssiUpdateById.getEsrInfo().getNetworkType()) {
- case CORE:
- UpdateCnNssiById cn = nssiUpdateById.getUpdateCnNssiById();
- nsiId = cn.getNsiInfo().getNsiId();
- assertObjectNotNull(nsiId);
- updateReq = marshal(cn);
- updateUrl = formatUrl(UpdateCnNssiById.URL, nssiId);
- break;
-
- case ACCESS:
- case TRANSPORT:
- throw new ApplicationException(1, "Update Nssi doesn't " + "support the Network type:"
- + nssiUpdateById.getEsrInfo().getNetworkType());
- }
-
- RestResponse rsp = restUtil.sendRequest(updateUrl, PUT, updateReq, nssiUpdateById.getEsrInfo());
- assertObjectNotNull(rsp);
-
- if (valueOf(rsp.getStatus()).startsWith("2")) {
- NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
-
- ResourceOperationStatus status = new ResourceOperationStatus(nssiId, allocateRes.getJobId(), nsiId);
- logger.info("save segment and operaton info -> begin");
- updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
- logger.info("save segment and operaton info -> end");
- }
- return rsp;
- }
-
- public RestResponse queryNssi(String vendor, String type, String sliceId) throws ApplicationException {
-
- logger.info("Query Nssi has begun");
- String getUrl = formatUrl(QUERY, sliceId);
- EsrInfo esr = new EsrInfo();
- esr.setVendor(vendor);
- esr.setNetworkType(NetworkType.valueOf(type));
- RestResponse rsp = restUtil.sendRequest(getUrl, GET, "", esr);
- assertObjectNotNull(rsp);
- return rsp;
- }
-
- public RestResponse queryNssiById(String vendor, String type, String nssiId) throws ApplicationException {
-
- logger.info("Query Nssi by ID has begun");
- String getUrl = formatUrl(QUERY_BY_ID, nssiId);
- EsrInfo esr = new EsrInfo();
- esr.setVendor(vendor);
- esr.setNetworkType(NetworkType.valueOf(type));
- RestResponse rsp = restUtil.sendRequest(getUrl, GET, "", esr);
- assertObjectNotNull(rsp);
- return rsp;
- }
-
- private void updateRequestDbJobStatus(ResponseDescriptor rspDesc, ResourceOperationStatus status, RestResponse rsp)
- throws ApplicationException {
-
- switch (fromString(rspDesc.getStatus())) {
-
- case STARTED:
- updateDbStatus(status, rsp.getStatus(), STARTED, QUERY_JOB_STATUS_SUCCESS);
- break;
-
- case ERROR:
- updateDbStatus(status, rsp.getStatus(), ERROR, QUERY_JOB_STATUS_FAILED);
- throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
-
- case FINISHED:
- if (rspDesc.getProgress() == 100) {
- updateDbStatus(status, rsp.getStatus(), FINISHED, QUERY_JOB_STATUS_SUCCESS);
- }
- break;
-
- case PROCESSING:
- updateDbStatus(status, rsp.getStatus(), PROCESSING, QUERY_JOB_STATUS_SUCCESS);
- break;
- }
- }
-
- private void updateDbStatus(ResourceOperationStatus status, int rspStatus, JobStatus jobStatus,
- String description) {
- status.setErrorCode(valueOf(rspStatus));
- status.setStatus(jobStatus.toString());
- status.setStatusDescription(description);
- logger.info("Updating DB status");
- rscOperStatusRepo.save(status);
- logger.info("Updating successful");
- }
-
- public void setRscOperStatusRepo(ResourceOperationStatusRepository rscOperStatusRepo) {
- this.rscOperStatusRepo = rscOperStatusRepo;
- }
-
- public void setRestUtil(RestUtil restUtil) {
- this.restUtil = restUtil;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java
deleted file mode 100644
index fc0f3ddde5..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.rest;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLSession;
-
-@Deprecated
-public class TrustAllHostNameVerifier implements HostnameVerifier {
-
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/NssmfManagerService.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/NssmfManagerService.java
deleted file mode 100644
index 92fe5576dd..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/NssmfManagerService.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.service;
-
-import org.onap.so.adapters.nssmf.annotation.ServiceLogger;
-import org.onap.so.beans.nsmf.*;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-@Service
-@ServiceLogger
-public interface NssmfManagerService {
- ResponseEntity allocateNssi(NssmfAdapterNBIRequest allocateRequest);
-
- ResponseEntity deAllocateNssi(NssmfAdapterNBIRequest allocateRequest, String sliceProfileId);
-
- ResponseEntity activateNssi(NssmfAdapterNBIRequest deActRequest, String snssai);
-
- ResponseEntity deActivateNssi(NssmfAdapterNBIRequest nssiDeActivate, String snssai);
-
- ResponseEntity queryJobStatus(NssmfAdapterNBIRequest jobReq, String jobId);
-
- ResponseEntity queryNSSISelectionCapability(NssmfAdapterNBIRequest nbiRequest);
-
- ResponseEntity querySubnetCapability(NssmfAdapterNBIRequest nbiRequest);
-
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImpl.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImpl.java
deleted file mode 100644
index 5b53856f2f..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImpl.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.service.impl;
-
-import org.apache.commons.lang3.StringUtils;
-import org.onap.so.adapters.nssmf.annotation.ServiceLogger;
-import org.onap.so.adapters.nssmf.config.NssmfAdapterConfig;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.manager.NssmfManagerBuilder;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.adapters.nssmf.manager.NssmfManager;
-import org.onap.so.adapters.nssmf.service.NssmfManagerService;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.*;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-
-@Service
-@ServiceLogger
-public class NssmfManagerServiceImpl implements NssmfManagerService {
-
- @Autowired
- private RestUtil restUtil;
-
- @Autowired
- private ResourceOperationStatusRepository repository;
-
- @Autowired
- private NssmfAdapterConfig nssmfAdapterConfig;
-
- @Override
- public ResponseEntity allocateNssi(NssmfAdapterNBIRequest request) {
- try {
-
- if (StringUtils.isNotBlank(request.getServiceInfo().getNssiId())) {
- return buildResponse(buildNssmfManager(request, ActionType.MODIFY).modifyNssi(request));
- }
-
- return buildResponse(buildNssmfManager(request, ActionType.ALLOCATE).allocateNssi(request));
-
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity deAllocateNssi(NssmfAdapterNBIRequest request, String sliceProfileId) {
- try {
- return buildResponse(
- buildNssmfManager(request, ActionType.DEALLOCATE).deAllocateNssi(request, sliceProfileId));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity activateNssi(NssmfAdapterNBIRequest request, String snssai) {
- try {
- return buildResponse(buildNssmfManager(request, ActionType.ACTIVATE).activateNssi(request, snssai));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity deActivateNssi(NssmfAdapterNBIRequest request, String snssai) {
- try {
- return buildResponse(buildNssmfManager(request, ActionType.DEACTIVATE).deActivateNssi(request, snssai));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity queryJobStatus(NssmfAdapterNBIRequest jobReq, String jobId) {
- try {
- return buildResponse(buildNssmfManager(jobReq, ActionType.QUERY_JOB_STATUS).queryJobStatus(jobReq, jobId));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity queryNSSISelectionCapability(NssmfAdapterNBIRequest nbiRequest) {
- EsrInfo esrInfo = nbiRequest.getEsrInfo();
- try {
- return buildResponse(buildNssmfManager(esrInfo, ActionType.QUERY_NSSI_SELECTION_CAPABILITY, null)
- .queryNSSISelectionCapability(nbiRequest));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- @Override
- public ResponseEntity querySubnetCapability(NssmfAdapterNBIRequest nbiRequest) {
- EsrInfo esrInfo = nbiRequest.getEsrInfo();
- try {
- return buildResponse(buildNssmfManager(esrInfo, ActionType.QUERY_SUB_NET_CAPABILITY, null)
- .querySubnetCapability(nbiRequest));
- } catch (ApplicationException e) {
- return e.buildErrorResponse();
- }
- }
-
- private ResponseEntity buildResponse(RestResponse rsp) {
- return ResponseEntity.status(rsp.getStatus()).body(rsp.getResponseContent());
- }
-
-
- private NssmfManager buildNssmfManager(NssmfAdapterNBIRequest request, ActionType actionType)
- throws ApplicationException {
- return buildNssmfManager(request.getEsrInfo(), actionType, request.getServiceInfo());
- }
-
- private NssmfManager buildNssmfManager(EsrInfo esrInfo, ActionType actionType, ServiceInfo serviceInfo)
- throws ApplicationException {
-
- return new NssmfManagerBuilder(esrInfo).setActionType(actionType).setRepository(repository)
- .setRestUtil(restUtil).setAdapterConfig(nssmfAdapterConfig).setServiceInfo(serviceInfo).build();
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java
deleted file mode 100644
index 090417ddc2..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.util;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.onap.logging.filter.base.ErrorCode;
-import org.springframework.stereotype.Component;
-import static org.onap.so.logger.LoggingAnchor.THREE;
-import static org.onap.so.logger.MessageEnum.RA_NS_EXC;
-
-public class NssmfAdapterUtil {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(NssmfAdapterUtil.class);
-
- public static final int BAD_REQUEST = 400;
-
- private static final String UNMARSHAL_FAIL_MSG = "Failed to unmarshal json";
-
- private static final String MARSHAL_FAIL_MSG = "Failed to marshal object";
-
- private static final ObjectMapper MAPPER = new ObjectMapper();
-
- public static class StatusDesc {
-
- public static final String ALLOCATE_NSS_SUCCESS = "Allocating nss is " + "successful";
-
- public static final String MODIFY_NSS_SUCCESS = "Modify nss is " + "successful";
-
- public static final String CREATE_NSS_SUCCESS = "Creating nss is " + "successful";
-
- public static final String DEALLOCATE_NSS_SUCCESS = "Deallocate nss " + "is successful";
-
- public static final String ACTIVATE_NSS_SUCCESS = "Activate nss " + "is successful";
-
- public static final String DEACTIVATE_NSS_SUCCESS = "Deactivate nss " + "is successful";
-
- public static final String QUERY_JOB_STATUS_FAILED = "Query job " + "status failed";
-
- public static final String QUERY_JOB_STATUS_SUCCESS = "Query job " + "status is successful";
-
- private StatusDesc() {
-
- }
- }
-
- private NssmfAdapterUtil() {
-
- }
-
- public static void assertObjectNotNull(Object object) throws ApplicationException {
- if (null == object) {
- LOGGER.error("Object is null.");
- throw new ApplicationException(BAD_REQUEST, "An object is null.");
- }
- }
-
- public static <T> T unMarshal(String jsonstr, Class<T> type) throws ApplicationException {
- try {
- return MAPPER.readValue(jsonstr, type);
- } catch (IOException e) {
- LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), UNMARSHAL_FAIL_MSG, e);
- throw new ApplicationException(BAD_REQUEST, UNMARSHAL_FAIL_MSG);
- }
- }
-
- public static String marshal(Object srcObj) throws ApplicationException {
- try {
- return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(srcObj);
- } catch (IOException e) {
- LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), MARSHAL_FAIL_MSG, e);
- throw new ApplicationException(BAD_REQUEST, MARSHAL_FAIL_MSG);
- }
- }
-
-
- public static String getStatusDesc(ActionType actionType) {
- String desc = "";
- switch (actionType) {
- case ALLOCATE:
- desc = StatusDesc.ALLOCATE_NSS_SUCCESS;
- break;
- case DEALLOCATE:
- desc = StatusDesc.DEALLOCATE_NSS_SUCCESS;
- break;
- case ACTIVATE:
- desc = StatusDesc.ACTIVATE_NSS_SUCCESS;
- break;
- case DEACTIVATE:
- desc = StatusDesc.DEACTIVATE_NSS_SUCCESS;
- break;
- case MODIFY:
- desc = StatusDesc.MODIFY_NSS_SUCCESS;
- break;
- default:
- break;
- }
-
- return desc;
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java
deleted file mode 100644
index 60bf423ed8..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.util;
-
-import javax.net.ssl.*;
-import javax.ws.rs.core.UriBuilder;
-import java.net.SocketTimeoutException;
-import java.net.URI;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.*;
-import org.apache.http.conn.ConnectTimeoutException;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.util.EntityUtils;
-import org.onap.aai.domain.yang.*;
-import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
-import org.onap.so.adapters.nssmf.extclients.aai.AaiServiceProvider;
-import org.onap.so.adapters.nssmf.entity.TokenRequest;
-import org.onap.so.adapters.nssmf.entity.TokenResponse;
-import org.onap.so.adapters.nssmf.enums.HttpMethod;
-import org.onap.so.adapters.nssmf.entity.NssmfInfo;
-import org.onap.so.adapters.nssmf.entity.RestResponse;
-import org.onap.so.beans.nsmf.EsrInfo;
-import org.onap.so.beans.nsmf.ServiceInfo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import static org.apache.http.entity.ContentType.APPLICATION_JSON;
-import static org.onap.so.adapters.nssmf.enums.HttpMethod.POST;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.BAD_REQUEST;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-import static org.onap.logging.filter.base.ErrorCode.AvailabilityError;
-import static org.onap.so.logger.LoggingAnchor.FOUR;
-import static org.onap.so.logger.MessageEnum.RA_NS_EXC;
-
-@Component
-public class RestUtil {
-
- private static final Logger logger = LoggerFactory.getLogger(RestUtil.class);
-
- private static final int DEFAULT_TIME_OUT = 60000;
-
- private static final String NSSMI_ADAPTER = "NSSMI Adapter";
-
- private static final String TOKEN_URL = "/api/rest/securityManagement/v1" + "/oauth/token";
-
- @Autowired
- private AaiServiceProvider aaiSvcProv;
-
- public void createServiceInstance(ServiceInstance serviceInstance, ServiceInfo serviceInfo) {
- aaiSvcProv.invokeCreateServiceInstance(serviceInstance, serviceInfo.getGlobalSubscriberId(),
- serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
- }
-
- public void updateServiceInstance(ServiceInstance serviceInstance, ServiceInfo serviceInfo) {
- aaiSvcProv.invokeUpdateServiceInstance(serviceInstance, serviceInfo.getGlobalSubscriberId(),
- serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
- }
-
- public ServiceInstance getServiceInstance(ServiceInfo serviceInfo) {
- return aaiSvcProv.invokeGetServiceInstance(serviceInfo.getGlobalSubscriberId(),
- serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
- }
-
- public void deleteServiceInstance(ServiceInfo serviceInfo) {
- aaiSvcProv.invokeDeleteServiceInstance(serviceInfo.getGlobalSubscriberId(),
- serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
- }
-
- public NssmfInfo getNssmfHost(EsrInfo esrInfo) throws ApplicationException {
- EsrThirdpartySdncList sdncList = aaiSvcProv.invokeGetThirdPartySdncList();
- if (sdncList != null && sdncList.getEsrThirdpartySdnc() != null) {
- for (EsrThirdpartySdnc sdncEsr : sdncList.getEsrThirdpartySdnc()) {
-
- EsrSystemInfoList sysInfoList =
- aaiSvcProv.invokeGetThirdPartySdncEsrSystemInfo(sdncEsr.getThirdpartySdncId());
-
- if (sysInfoList != null && sysInfoList.getEsrSystemInfo() != null) {
- for (EsrSystemInfo esr : sysInfoList.getEsrSystemInfo()) {
- if (esr != null && esr.getType().equals(esrInfo.getNetworkType().getNetworkType())
- && esr.getVendor().equals(esrInfo.getVendor())) {
- logger.info("Found an entry with vendor name " + esrInfo.getVendor() + " and network type "
- + esrInfo.getNetworkType() + " in ESR.");
- NssmfInfo nssmfInfo = new NssmfInfo();
- nssmfInfo.setIpAddress(esr.getIpAddress());
- nssmfInfo.setPort(esr.getPort());
- nssmfInfo.setCacert(esr.getSslCacert());
- nssmfInfo.setUserName(esr.getUserName());
- nssmfInfo.setPassword(esr.getPassword());
- String endPoint = UriBuilder.fromPath("").host(esr.getIpAddress())
- .port(Integer.valueOf(esr.getPort())).scheme("https").build().toString();
- nssmfInfo.setUrl(endPoint);
- return nssmfInfo;
- }
- }
- }
-
- }
- }
-
- throw new ApplicationException(BAD_REQUEST, "ESR information is improper");
- }
-
-
- public String getToken(NssmfInfo nssmfInfo) throws ApplicationException {
-
-
- TokenRequest req = new TokenRequest();
- req.setGrantType("password");
- req.setUserName(nssmfInfo.getUserName());
- req.setValue(nssmfInfo.getPassword());
-
- String tokenReq = marshal(req);
-
- logger.info("Sending token request to NSSMF: " + tokenReq);
- RestResponse tokenRes = send(nssmfInfo.getUrl() + TOKEN_URL, POST, tokenReq, null);
-
- TokenResponse res = unMarshal(tokenRes.getResponseContent(), TokenResponse.class);
-
- return res.getAccessToken();
- }
-
-
- public RestResponse send(String url, HttpMethod methodType, String content, Header header) {
-
- HttpRequestBase req = null;
- HttpResponse res = null;
-
- logger.debug("Beginning to send message {}: {}", methodType, url);
-
- try {
- int timeout = DEFAULT_TIME_OUT;
-
- RequestConfig config = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
- .setConnectionRequestTimeout(timeout).build();
- logger.debug("Sending request to NSSMF: " + content);
- req = getHttpReq(url, methodType, header, config, content);
- res = getHttpsClient().execute(req);
-
- String resContent = null;
- if (res.getEntity() != null) {
- resContent = EntityUtils.toString(res.getEntity(), "UTF-8");
- }
-
- int statusCode = res.getStatusLine().getStatusCode();
- String statusMessage = res.getStatusLine().getReasonPhrase();
- logger.info("NSSMF Response: {} {}", statusCode,
- statusMessage + (resContent == null ? "" : System.lineSeparator() + resContent));
-
- if (res.getStatusLine().getStatusCode() >= 300) {
- String errMsg = "{\n \"errorCode\": " + res.getStatusLine().getStatusCode()
- + "\n \"errorDescription\": " + statusMessage + "\n}";
- logError(errMsg);
- return createResponse(statusCode, errMsg);
- }
- if (null != req) {
- req.reset();
- }
- req = null;
-
- return createResponse(statusCode, resContent);
-
- } catch (SocketTimeoutException | ConnectTimeoutException e) {
- String errMsg = "Request to NSSMF timed out";
- logError(errMsg, e);
- return createResponse(408, errMsg);
- } catch (Exception e) {
- String errMsg = "Error processing request to NSSMF";
- logError(errMsg, e);
- return createResponse(500, errMsg);
- } finally {
- if (res != null) {
- try {
- EntityUtils.consume(res.getEntity());
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
- if (req != null) {
- try {
- req.reset();
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
- }
- }
-
- public RestResponse createResponse(int statusCode, String errMsg) {
- RestResponse restResponse = new RestResponse();
- restResponse.setStatus(statusCode);
- restResponse.setResponseContent(errMsg);
- return restResponse;
- }
-
- private HttpRequestBase getHttpReq(String url, HttpMethod method, Header header, RequestConfig config,
- String content) throws ApplicationException {
- HttpRequestBase base;
- switch (method) {
- case POST:
- HttpPost post = new HttpPost(url);
- post.setEntity(new StringEntity(content, APPLICATION_JSON));
- base = post;
- break;
-
- case GET:
- HttpGetWithBody get = new HttpGetWithBody(url);
- if (content != null) {
- get.setEntity(new StringEntity(content, APPLICATION_JSON));
- }
- base = get;
- break;
-
- case PUT:
- HttpPut put = new HttpPut(url);
- put.setEntity(new StringEntity(content, APPLICATION_JSON));
- base = put;
- break;
-
- case PATCH:
- base = new HttpPatch(url);
- break;
-
- case DELETE:
- HttpDeleteWithBody delete = new HttpDeleteWithBody(url);
- if (content != null) {
- delete.setEntity(new StringEntity(content, APPLICATION_JSON));
- }
- base = delete;
- break;
- default:
- throw new ApplicationException(404, "invalid method: " + method);
-
- }
- base.setConfig(config);
- if (header != null) {
- base.setHeader(header);
- }
- return base;
- }
-
- public RestResponse sendRequest(String allocateUrl, HttpMethod post, String allocateReq, EsrInfo esrInfo)
- throws ApplicationException {
- NssmfInfo nssmfInfo = getNssmfHost(esrInfo);
- Header header = new BasicHeader("X-Auth-Token", getToken(nssmfInfo));
- String nssmfUrl = nssmfInfo.getUrl() + allocateUrl;
- return send(nssmfUrl, post, allocateReq, header);
- }
-
- class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {
- public static final String METHOD_NAME = "DELETE";
-
- @Override
- public String getMethod() {
- return METHOD_NAME;
- }
-
- public HttpDeleteWithBody(final String uri) {
- super();
- setURI(URI.create(uri));
- }
-
- public HttpDeleteWithBody(final URI uri) {
- super();
- setURI(uri);
- }
-
- public HttpDeleteWithBody() {
- super();
- }
- }
-
- class HttpGetWithBody extends HttpEntityEnclosingRequestBase {
- public static final String METHOD_NAME = "GET";
-
- public HttpGetWithBody() {
- super();
- }
-
- public HttpGetWithBody(final String uri) {
- super();
- setURI(URI.create(uri));
- }
-
- public HttpGetWithBody(final URI uri) {
- super();
- setURI(uri);
- }
-
- @Override
- public String getMethod() {
- return METHOD_NAME;
- }
- }
-
-
- public HttpClient getHttpsClient() {
-
- TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
- @Override
- public java.security.cert.X509Certificate[] getAcceptedIssuers() {
- return null;
- }
-
- @Override
- public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
-
- @Override
- public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
- }};
-
- // Install the all-trusting trust manager
- try {
- SSLContext sc = SSLContext.getInstance("SSL");
- sc.init(null, trustAllCerts, new java.security.SecureRandom());
-
- SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sc,
- new String[] {"TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"}, null, (s, sslSession) -> true);
- return HttpClients.custom().setSSLSocketFactory(sslsf).build();
- } catch (Exception e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- private static void logError(String errMsg, Throwable t) {
- logger.error(FOUR, RA_NS_EXC.toString(), NSSMI_ADAPTER, AvailabilityError.getValue(), errMsg, t);
- }
-
- private static void logError(String errMsg) {
- logger.error(FOUR, RA_NS_EXC.toString(), NSSMI_ADAPTER, AvailabilityError.toString(), errMsg);
- }
-}
-
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties b/adapters/mso-nssmf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
deleted file mode 100644
index f93ec63f37..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
+++ /dev/null
@@ -1 +0,0 @@
-org.onap.so.adapters.nssmf.extclients.aai.AaiClientPropertiesImpl \ No newline at end of file
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/application-aaf.yaml b/adapters/mso-nssmf-adapter/src/main/resources/application-aaf.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/application-aaf.yaml
+++ /dev/null
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/application-basic.yaml b/adapters/mso-nssmf-adapter/src/main/resources/application-basic.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/application-basic.yaml
+++ /dev/null
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/application-test.yaml b/adapters/mso-nssmf-adapter/src/main/resources/application-test.yaml
deleted file mode 100644
index 8e10dfb72b..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/application-test.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- endpoint: https://aai.onap:30233
-logging:
- path: logs
-
-spring:
- datasource:
- jdbcUrl: jdbc:mariadb://49.232.146.162:8989/requestdb
- username: root
- password: 123456
- driver-class-name: org.mariadb.jdbc.Driver
- initialization-mode: always
- jpa:
- generate-ddl: false
- show-sql: false
- hibernate:
- ddl-auto: none
- naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- enable-lazy-load-no-trans: true
- database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- security:
- usercredentials:
- - username: bpel
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- - username: mso_admin
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: ACTUATOR
-server:
- port: 8080
- tomcat:
- max-threads: 50
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
- site-name: localSite
- logPath: ./logs/nssmf
- adapters:
- requestDb:
- endpoint: https://so-request-db-adapter.onap:8083
- auth: Basic YnBlbDpwYXNzd29yZDEk
- infra:
- endpoint: https://so.onap:8080
- auth: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use. \ No newline at end of file
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/application.yaml b/adapters/mso-nssmf-adapter/src/main/resources/application.yaml
deleted file mode 100644
index 5501fba88f..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/application.yaml
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# ============LICENSE_START=======================================================
-# ONAP - SO
-# ================================================================================
-# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-#/
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- endpoint: https://aai.onap:30233
-logging:
- path: logs
-
-spring:
- datasource:
- jdbc-url: jdbc:mariadb://${DB_HOST}:${DB_PORT}/requestdb
- username: ${DB_USERNAME}
- password: ${DB_PASSWORD}
- driver-class-name: org.mariadb.jdbc.Driver
- jpa:
- show-sql: false
- hibernate:
- dialect: org.hibernate.dialect.MySQL5Dialect
- ddl-auto: validate
- naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- enable-lazy-load-no-trans: true
- security:
- usercredentials:
- - username: bpel
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- - username: mso_admin
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: ACTUATOR
-
-server:
- port: 8080
- tomcat:
- max-threads: 50
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
- site-name: localSite
- logPath: ./logs/nssmf
- adapters:
- requestDb:
- endpoint: https://so-request-db-adapter.{{ include "common.namespace" . }}:8083
- auth: Basic YnBlbDpwYXNzd29yZDEk
- infra:
- endpoint: http://so.onap:8080
- auth: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use.
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.p12 b/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.p12
deleted file mode 100644
index 79631bf344..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.p12
+++ /dev/null
Binary files differ
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.trust.jks b/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.trust.jks
deleted file mode 100644
index 6f8168d896..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/org.onap.so.trust.jks
+++ /dev/null
Binary files differ
diff --git a/adapters/mso-nssmf-adapter/src/main/resources/subnetCapability.json b/adapters/mso-nssmf-adapter/src/main/resources/subnetCapability.json
deleted file mode 100644
index 8753e85ea2..0000000000
--- a/adapters/mso-nssmf-adapter/src/main/resources/subnetCapability.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "AN": {
- "latency": 5,
- "maxNumberofUEs": "100"
- },
- "CN": {
- "latency": 5,
- "maxNumberofConns": "100"
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java b/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java
deleted file mode 100644
index f78bfd297a..0000000000
--- a/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/NssmfAdapterRestTest.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-import static org.onap.so.beans.nsmf.NetworkType.CORE;
-import static org.onap.so.beans.nsmf.ResourceSharingLevel.NON_SHARED;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.LinkedList;
-import java.util.List;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-import org.onap.so.adapters.nssmf.entity.TokenResponse;
-import org.onap.so.adapters.nssmf.enums.HttpMethod;
-import org.onap.so.adapters.nssmf.rest.NssmfAdapterRest;
-import org.onap.so.adapters.nssmf.entity.NssmfInfo;
-import org.onap.so.adapters.nssmf.rest.NssmfManager;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.ActDeActNssi;
-import org.onap.so.beans.nsmf.AllocateCnNssi;
-import org.onap.so.beans.nsmf.CnSliceProfile;
-import org.onap.so.beans.nsmf.DeAllocateNssi;
-import org.onap.so.beans.nsmf.EsrInfo;
-import org.onap.so.beans.nsmf.JobStatusRequest;
-import org.onap.so.beans.nsmf.NsiInfo;
-import org.onap.so.beans.nsmf.NssiActDeActRequest;
-import org.onap.so.beans.nsmf.NssiAllocateRequest;
-import org.onap.so.beans.nsmf.NssiDeAllocateRequest;
-import org.onap.so.beans.nsmf.NssiResponse;
-import org.onap.so.beans.nsmf.PerfReq;
-import org.onap.so.beans.nsmf.PerfReqEmbb;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.skyscreamer.jsonassert.JSONAssert;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-public class NssmfAdapterRestTest {
-
- private final static String ALLOCATE = "{\n" + " \"esrInfo\" : {\n" + " \"vendor\" : \"huawei\",\n"
- + " \"networkType\" : \"cn\"\n" + " },\n" + " \"allocateCnNssi\" : {\n"
- + " \"nssiId\" : \"NSST-C-001-HDBNJ-NSSMF-01-A-ZX\",\n" + " \"nssiName\" : \"eMBB-001\",\n"
- + " \"sliceProfile\" : {\n" + " \"snssaiList\" : [ \"001-100001\" ],\n"
- + " \"maxNumberofPDUSession\" : 10,\n"
- + " \"sliceProfileId\" : \"ab9af40f13f721b5f13539d87484098\",\n"
- + " \"plmnIdList\" : [ \"460-00\", \"460-01\" ],\n" + " \"perfReq\" : {\n"
- + " \"perfReqEmbbList\" : [ {\n" + " \"activityFactor\" : 50\n" + " } ]\n"
- + " },\n" + " \"maxNumberofUEs\" : 200,\n"
- + " \"coverageAreaTAList\" : [ \"1\", \"2\", \"3\" ],\n" + " \"latency\" : 6,\n"
- + " \"resourceSharingLevel\" : \"non-shared\"\n" + " },\n" + " \"scriptName\" : \"CN1\",\n"
- + " \"nsiInfo\" : {\n" + " \"nsiName\" : \"eMBB-001\",\n"
- + " \"nsiId\" : \"NSI-M-001-HDBNJ-NSMF-01-A-ZX\"\n" + " }\n" + " }\n" + "}";
-
- private NssmfManager nssmfMgr;
-
- @Mock
- private ResourceOperationStatusRepository rscOperStatusRepo;
-
- @Mock
- private RestUtil restUtil;
-
- @Mock
- private NssmfAdapterRest nssmfRest;
-
- @Mock
- private HttpResponse tokenResponse;
-
- @Mock
- private HttpEntity tokenEntity;
-
- @Mock
- private HttpResponse commonResponse;
-
- @Mock
- private HttpEntity commonEntity;
-
- @Mock
- private StatusLine statusLine;
-
- @Mock
- private HttpClient httpClient;
-
- private InputStream postStream;
-
- private InputStream tokenStream;
-
- @Before
- public void setUp() {
- initMocks(this);
- nssmfMgr = new NssmfManager();
- nssmfMgr.setRestUtil(restUtil);
- nssmfMgr.setRscOperStatusRepo(rscOperStatusRepo);
- }
-
- private void createCommonMock(int statusCode, NssmfInfo nssmf) throws Exception {
- when(this.restUtil.send(any(String.class), any(HttpMethod.class), any(String.class), any(Header.class)))
- .thenCallRealMethod();
- when(this.restUtil.createResponse(any(Integer.class), any(String.class))).thenCallRealMethod();
- when(nssmfRest.getNssmfMgr()).thenReturn(nssmfMgr);
- // when(nssmfRest.createAllocateNssi(any(NssiAllocateRequest.class))).thenCallRealMethod();
- // when(nssmfRest.deAllocateNssi(any(NssiDeAllocateRequest.class), any(String.class))).thenCallRealMethod();
- // when(nssmfRest.activateNssi(any(NssiActDeActRequest.class), any(String.class))).thenCallRealMethod();
- // when(nssmfRest.deactivateNssi(any(NssiActDeActRequest.class), any(String.class))).thenCallRealMethod();
- //
- // when(nssmfRest.queryJobStatus(any(JobStatusRequest.class), any(String.class))).thenCallRealMethod();
- when(restUtil.sendRequest(any(String.class), any(HttpMethod.class), any(String.class), any(EsrInfo.class)))
- .thenCallRealMethod();
- when(restUtil.getHttpsClient()).thenReturn(httpClient);
-
- when(statusLine.getStatusCode()).thenReturn(200);
- when(restUtil.getNssmfHost(any(EsrInfo.class))).thenReturn(nssmf);
-
- when(tokenResponse.getEntity()).thenReturn(tokenEntity);
- when(tokenResponse.getStatusLine()).thenReturn(statusLine);
- when(tokenEntity.getContent()).thenReturn(tokenStream);
-
- when(commonResponse.getEntity()).thenReturn(commonEntity);
- when(commonResponse.getStatusLine()).thenReturn(statusLine);
- when(commonEntity.getContent()).thenReturn(postStream);
-
- Answer<HttpResponse> answer = new Answer<HttpResponse>() {
-
- public HttpResponse answer(InvocationOnMock invocation) throws Throwable {
- Object[] arguments = invocation.getArguments();
- if (arguments != null && arguments.length == 1 && arguments[0] != null) {
-
- HttpRequestBase base = (HttpRequestBase) arguments[0];
- if (base.getURI().toString().endsWith("/oauth/token")) {
- return tokenResponse;
- } else {
- return commonResponse;
- }
- }
- return commonResponse;
- }
- };
- doAnswer(answer).when(httpClient).execute(any(HttpRequestBase.class));
- }
-
- // @Test
- // public void testNssiAllocate() throws Exception {
- // NssmfInfo nssmf = new NssmfInfo();
- // nssmf.setUserName("nssmf-user");
- // nssmf.setPassword("nssmf-pass");
- // nssmf.setPort("8080");
- // nssmf.setIpAddress("127.0.0.1");
- //
- // NssiResponse nssiRes = new NssiResponse();
- // nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
- // nssiRes.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- //
- // TokenResponse token = new TokenResponse();
- // token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- // token.setExpires(1800);
- //
- // postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- // tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
- //
- // createCommonMock(200, nssmf);
- // // assertEquals(prettyPrint(createAllocateNssi()), ALLOCATE);
- // ResponseEntity res = nssmfRest.createAllocateNssi(createAllocateNssi());
- // assertNotNull(res);
- // assertNotNull(res.getBody());
- // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- // assertEquals(allRes.getNssiId(), "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- // }
- //
- // @Test
- // public void testNssiDeAllocate() throws Exception {
- // NssmfInfo nssmf = new NssmfInfo();
- // nssmf.setUserName("nssmf-user");
- // nssmf.setPassword("nssmf-pass");
- // nssmf.setPort("8080");
- // nssmf.setIpAddress("127.0.0.1");
- //
- // NssiResponse nssiRes = new NssiResponse();
- // nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
- //
- // TokenResponse token = new TokenResponse();
- // token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- // token.setExpires(1800);
- //
- // postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- // tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
- //
- // createCommonMock(200, nssmf);
- // ResponseEntity res = nssmfRest.deAllocateNssi(deAllocateNssi(), "ab9af40f13f721b5f13539d87484098");
- // assertNotNull(res);
- // assertNotNull(res.getBody());
- // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- // }
- //
- // @Test
- // public void testNssiActivate() throws Exception {
- // NssmfInfo nssmf = new NssmfInfo();
- // nssmf.setUserName("nssmf-user");
- // nssmf.setPassword("nssmf-pass");
- // nssmf.setPort("8080");
- // nssmf.setIpAddress("127.0.0.1");
- //
- // NssiResponse nssiRes = new NssiResponse();
- // nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
- //
- // TokenResponse token = new TokenResponse();
- // token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- // token.setExpires(1800);
- //
- // postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- // tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
- //
- // createCommonMock(200, nssmf);
- // ResponseEntity res = nssmfRest.activateNssi(activateNssi(), "001-100001");
- // assertNotNull(res);
- // assertNotNull(res.getBody());
- // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- // }
- //
- // @Test
- // public void testNssiDeActivate() throws Exception {
- // NssmfInfo nssmf = new NssmfInfo();
- // nssmf.setUserName("nssmf-user");
- // nssmf.setPassword("nssmf-pass");
- // nssmf.setPort("8080");
- // nssmf.setIpAddress("127.0.0.1");
- //
- // NssiResponse nssiRes = new NssiResponse();
- // nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
- //
- // TokenResponse token = new TokenResponse();
- // token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- // token.setExpires(1800);
- //
- // postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- // tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
- //
- // createCommonMock(200, nssmf);
- // ResponseEntity res = nssmfRest.deactivateNssi(deActivateNssi(), "001-100001");
- // assertNotNull(res);
- // assertNotNull(res.getBody());
- // NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- // assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- // }
- //
- @Test
- public void testAllocateJsonSerDeSer() throws Exception {
- JSONAssert.assertEquals(marshal(allocateNssi()), ALLOCATE, false);
- NssiAllocateRequest all = unMarshal(ALLOCATE, NssiAllocateRequest.class);
- assertNotNull(all);
- assertNotNull(all.getAllocateCnNssi());
- assertNotNull(all.getAllocateCnNssi().getSliceProfile());
- assertEquals(all.getAllocateCnNssi().getSliceProfile().getResourceSharingLevel(), NON_SHARED);
- assertNotNull(all.getAllocateCnNssi().getSliceProfile().getPerfReq());
- assertNotNull(all.getAllocateCnNssi().getSliceProfile().getPerfReq().getPerfReqEmbbList());
- PerfReqEmbb embb =
- all.getAllocateCnNssi().getSliceProfile().getPerfReq().getPerfReqEmbbList().iterator().next();
- assertNotNull(embb);
- assertEquals(embb.getActivityFactor(), 50);
- }
-
- public NssiAllocateRequest allocateNssi() throws Exception {
- CnSliceProfile sP = new CnSliceProfile();
- List<String> sns = new LinkedList<>();
- sns.add("001-100001");
- List<String> plmn = new LinkedList<>();
- plmn.add("460-00");
- plmn.add("460-01");
- PerfReqEmbb embb = new PerfReqEmbb();
- embb.setActivityFactor(50);
- List<PerfReqEmbb> embbList = new LinkedList<>();
- embbList.add(embb);
- PerfReq perfReq = new PerfReq();
- perfReq.setPerfReqEmbbList(embbList);
- List<String> taList = new LinkedList<>();
- taList.add("1");
- taList.add("2");
- taList.add("3");
- sP.setSnssaiList(sns);
- sP.setSliceProfileId("ab9af40f13f721b5f13539d87484098");
- sP.setPLMNIdList(plmn);
- sP.setPerfReq(perfReq);
- sP.setMaxNumberOfUEs(200);
- sP.setCoverageAreaTAList(taList);
- sP.setLatency(6);
- sP.setResourceSharingLevel(NON_SHARED);
- sP.setMaxNumberOfPDUSession(10);
- NsiInfo nsiInfo = new NsiInfo();
- nsiInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- nsiInfo.setNsiName("eMBB-001");
- AllocateCnNssi cnNssi = new AllocateCnNssi();
- cnNssi.setNssiId("NSST-C-001-HDBNJ-NSSMF-01-A-ZX");
- cnNssi.setNssiName("eMBB-001");
- cnNssi.setScriptName("CN1");
- cnNssi.setSliceProfile(sP);
- cnNssi.setNsiInfo(nsiInfo);
- EsrInfo esrInfo = new EsrInfo();
- esrInfo.setVendor("huawei");
- esrInfo.setNetworkType(CORE);
- NssiAllocateRequest allocate = new NssiAllocateRequest();
- allocate.setAllocateCnNssi(cnNssi);
- allocate.setEsrInfo(esrInfo);
- return allocate;
- }
-
- //
- // public NssiDeAllocateRequest deAllocateNssi() throws Exception {
- // DeAllocateNssi deAllocateNssi = new DeAllocateNssi();
- // deAllocateNssi.setTerminateNssiOption(0);
- // List<String> snssai = new LinkedList<>();
- // snssai.add("001-100001");
- // deAllocateNssi.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- // deAllocateNssi.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- // deAllocateNssi.setScriptName("CN1");
- // deAllocateNssi.setSnssaiList(snssai);
- // EsrInfo esrInfo = new EsrInfo();
- // esrInfo.setVendor("huawei");
- // esrInfo.setNetworkType(CORE);
- // NssiDeAllocateRequest deAllocate = new NssiDeAllocateRequest();
- // deAllocate.setDeAllocateNssi(deAllocateNssi);
- // deAllocate.setEsrInfo(esrInfo);
- // return deAllocate;
- // }
- //
- // public NssiActDeActRequest activateNssi() throws Exception {
- // EsrInfo esrInfo = new EsrInfo();
- // esrInfo.setVendor("huawei");
- // esrInfo.setNetworkType(CORE);
- // ActDeActNssi act = new ActDeActNssi();
- // act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- // act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- // NssiActDeActRequest actReq = new NssiActDeActRequest();
- // actReq.setActDeActNssi(act);
- // actReq.setEsrInfo(esrInfo);
- // return actReq;
- // }
- //
- // public NssiActDeActRequest deActivateNssi() throws Exception {
- // EsrInfo esrInfo = new EsrInfo();
- // esrInfo.setVendor("huawei");
- // esrInfo.setNetworkType(CORE);
- // ActDeActNssi deAct = new ActDeActNssi();
- // deAct.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- // deAct.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- // NssiActDeActRequest deActReq = new NssiActDeActRequest();
- // deActReq.setActDeActNssi(deAct);
- // deActReq.setEsrInfo(esrInfo);
- // return deActReq;
- // }
- //
- public String queryJobStatusNssi() throws Exception {
- EsrInfo esrInfo = new EsrInfo();
- esrInfo.setVendor("huawei");
- esrInfo.setNetworkType(CORE);
-
- JobStatusRequest jobStatus = new JobStatusRequest();
- jobStatus.setEsrInfo(esrInfo);
- jobStatus.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- jobStatus.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- return marshal(jobStatus);
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java b/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java
deleted file mode 100644
index 26904fa8a4..0000000000
--- a/adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2020, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.nssmf.service.impl;
-
-
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.stubbing.Answer;
-import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
-import org.onap.so.adapters.nssmf.entity.NssmfInfo;
-import org.onap.so.adapters.nssmf.entity.TokenResponse;
-import org.onap.so.adapters.nssmf.enums.ActionType;
-import org.onap.so.adapters.nssmf.enums.HttpMethod;
-import org.onap.so.adapters.nssmf.util.RestUtil;
-import org.onap.so.beans.nsmf.*;
-import org.onap.so.beans.nsmf.oof.SubnetCapability;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.junit4.SpringRunner;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.util.*;
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
-import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
-import static org.onap.so.beans.nsmf.NetworkType.CORE;
-import static org.onap.so.beans.nsmf.ResourceSharingLevel.NON_SHARED;
-
-@RunWith(SpringRunner.class)
-public class NssmfManagerServiceImplTest {
-
- @Mock
- private RestUtil restUtil;
-
-
- private NssmfManagerServiceImpl nssiManagerService;
-
- @Mock
- private HttpResponse tokenResponse;
-
- @Mock
- private HttpEntity tokenEntity;
-
- @Mock
- private HttpResponse commonResponse;
-
- @Mock
- private HttpEntity commonEntity;
-
- @Mock
- private StatusLine statusLine;
-
- @Mock
- private HttpClient httpClient;
-
- private InputStream postStream;
-
- private InputStream tokenStream;
-
- @Mock
- private ResourceOperationStatusRepository repository;
-
- @Before
- public void setUp() throws Exception {
- initMocks(this);
-
- nssiManagerService = new NssmfManagerServiceImpl();
-
- Field restUtil = nssiManagerService.getClass().getDeclaredField("restUtil");
- restUtil.setAccessible(true);
- restUtil.set(nssiManagerService, this.restUtil);
-
- Field repository = nssiManagerService.getClass().getDeclaredField("repository");
- repository.setAccessible(true);
- repository.set(nssiManagerService, this.repository);
- // nssiManagerService.setRestUtil(this.restUtil);
-
- when(this.restUtil.send(any(String.class), any(HttpMethod.class), any(), any(Header.class)))
- .thenCallRealMethod();
- when(this.restUtil.createResponse(any(Integer.class), any(String.class))).thenCallRealMethod();
- }
-
- private void createCommonMock(int statusCode, NssmfInfo nssmf) throws Exception {
- when(restUtil.getToken(any(NssmfInfo.class))).thenReturn("7512eb3feb5249eca5ddd742fedddd39");
- when(restUtil.getHttpsClient()).thenReturn(httpClient);
-
- when(statusLine.getStatusCode()).thenReturn(statusCode);
- when(restUtil.getNssmfHost(any(EsrInfo.class))).thenReturn(nssmf);
-
- when(tokenResponse.getEntity()).thenReturn(tokenEntity);
- when(tokenResponse.getStatusLine()).thenReturn(statusLine);
- when(tokenEntity.getContent()).thenReturn(tokenStream);
-
- when(commonResponse.getEntity()).thenReturn(commonEntity);
- when(commonResponse.getStatusLine()).thenReturn(statusLine);
- when(commonEntity.getContent()).thenReturn(postStream);
-
- Answer<HttpResponse> answer = invocation -> {
- Object[] arguments = invocation.getArguments();
- if (arguments != null && arguments.length == 1 && arguments[0] != null) {
-
- HttpRequestBase base = (HttpRequestBase) arguments[0];
- if (base.getURI().toString().endsWith("/oauth/token")) {
- return tokenResponse;
- } else {
- return commonResponse;
- }
- }
- return commonResponse;
- };
-
- doAnswer(answer).when(httpClient).execute(any(HttpRequestBase.class));
-
- }
-
- @Test
- public void allocateNssi() throws Exception {
-
- NssmfInfo nssmf = new NssmfInfo();
- nssmf.setUserName("nssmf-user");
- nssmf.setPassword("nssmf-pass");
- nssmf.setPort("8080");
- nssmf.setIpAddress("127.0.0.1");
- nssmf.setUrl("http://127.0.0.1:8080");
-
- NssiResponse nssiRes = new NssiResponse();
- nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
- nssiRes.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
-
- TokenResponse token = new TokenResponse();
- token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- token.setExpires(1800);
-
- postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
-
- createCommonMock(200, nssmf);
-
-
- NssmfAdapterNBIRequest nbiRequest = createAllocateNssi();
- assertNotNull(nbiRequest);
- System.out.println(marshal(nbiRequest));
- ResponseEntity res = nssiManagerService.allocateNssi(nbiRequest);
- assertNotNull(res);
- assertNotNull(res.getBody());
- NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- assertEquals(allRes.getNssiId(), "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
-
- System.out.println(res);
- }
-
-
-
- private NssmfAdapterNBIRequest createAllocateNssi() {
- CnSliceProfile sP = new CnSliceProfile();
- List<String> sns = new LinkedList<>();
- sns.add("001-100001");
- List<String> plmn = new LinkedList<>();
- plmn.add("460-00");
- plmn.add("460-01");
- PerfReqEmbb embb = new PerfReqEmbb();
- embb.setActivityFactor(50);
- List<PerfReqEmbb> embbList = new LinkedList<>();
- embbList.add(embb);
- PerfReq perfReq = new PerfReq();
- perfReq.setPerfReqEmbbList(embbList);
- List<String> taList = new LinkedList<>();
- taList.add("1");
- taList.add("2");
- taList.add("3");
- sP.setSnssaiList(sns);
- sP.setSliceProfileId("ab9af40f13f721b5f13539d87484098");
- sP.setPLMNIdList(plmn);
- sP.setPerfReq(perfReq);
- sP.setMaxNumberOfUEs(200);
- sP.setCoverageAreaTAList(taList);
- sP.setLatency(6);
- sP.setResourceSharingLevel(NON_SHARED);
- NsiInfo nsiInfo = new NsiInfo();
- nsiInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- nsiInfo.setNsiName("eMBB-001");
- AllocateCnNssi cnNssi = new AllocateCnNssi();
- cnNssi.setNssiId("NSST-C-001-HDBNJ-NSSMF-01-A-ZX");
- cnNssi.setNssiName("eMBB-001");
- cnNssi.setScriptName("CN1");
- cnNssi.setSliceProfile(sP);
- cnNssi.setNsiInfo(nsiInfo);
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- nbiRequest.setAllocateCnNssi(cnNssi);
- return nbiRequest;
- }
-
- @Test
- public void deAllocateNssi() throws Exception {
- DeAllocateNssi deAllocateNssi = new DeAllocateNssi();
- deAllocateNssi.setTerminateNssiOption(0);
- List<String> snssai = new LinkedList<>();
- snssai.add("001-100001");
- deAllocateNssi.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- deAllocateNssi.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
- deAllocateNssi.setScriptName("CN1");
- deAllocateNssi.setSnssaiList(snssai);
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- nbiRequest.setDeAllocateNssi(deAllocateNssi);
-
- NssmfInfo nssmf = new NssmfInfo();
- nssmf.setUserName("nssmf-user");
- nssmf.setPassword("nssmf-pass");
- nssmf.setPort("8080");
- nssmf.setIpAddress("127.0.0.1");
-
- NssiResponse nssiRes = new NssiResponse();
- nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
-
- TokenResponse token = new TokenResponse();
- token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- token.setExpires(1800);
-
- postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
-
- createCommonMock(202, nssmf);
- ResponseEntity res = nssiManagerService.deAllocateNssi(nbiRequest, "ab9af40f13f721b5f13539d87484098");
- assertNotNull(res);
- assertNotNull(res.getBody());
- NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- assertNotNull(res);
- assertNotNull(res.getBody());
- }
-
- @Test
- public void activateNssi() throws Exception {
- NssmfInfo nssmf = new NssmfInfo();
- nssmf.setUserName("nssmf-user");
- nssmf.setPassword("nssmf-pass");
- nssmf.setPort("8080");
- nssmf.setIpAddress("127.0.0.1");
-
- NssiResponse nssiRes = new NssiResponse();
- nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
-
- TokenResponse token = new TokenResponse();
- token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- token.setExpires(1800);
-
- postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
-
- ActDeActNssi act = new ActDeActNssi();
- act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- nbiRequest.setActDeActNssi(act);
-
- createCommonMock(200, nssmf);
- ResponseEntity res = nssiManagerService.activateNssi(nbiRequest, "001-100001");
- assertNotNull(res);
- assertNotNull(res.getBody());
- NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- }
-
- @Test
- public void deActivateNssi() throws Exception {
- NssmfInfo nssmf = new NssmfInfo();
- nssmf.setUserName("nssmf-user");
- nssmf.setPassword("nssmf-pass");
- nssmf.setPort("8080");
- nssmf.setIpAddress("127.0.0.1");
-
- NssiResponse nssiRes = new NssiResponse();
- nssiRes.setJobId("4b45d919816ccaa2b762df5120f72067");
-
- TokenResponse token = new TokenResponse();
- token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- token.setExpires(1800);
-
- postStream = new ByteArrayInputStream(marshal(nssiRes).getBytes(UTF_8));
- tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
-
- ActDeActNssi act = new ActDeActNssi();
- act.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- act.setNssiId("NSSI-C-001-HDBNJ-NSSMF-01-A-ZX");
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- nbiRequest.setActDeActNssi(act);
-
- createCommonMock(200, nssmf);
- ResponseEntity res = nssiManagerService.deActivateNssi(nbiRequest, "001-100001");
- assertNotNull(res);
- assertNotNull(res.getBody());
- NssiResponse allRes = unMarshal(res.getBody().toString(), NssiResponse.class);
- assertEquals(allRes.getJobId(), "4b45d919816ccaa2b762df5120f72067");
- }
-
- @Test
- public void queryJobStatus() throws Exception {
- NssmfInfo nssmf = new NssmfInfo();
- nssmf.setUserName("nssmf-user");
- nssmf.setPassword("nssmf-pass");
- nssmf.setPort("8080");
- nssmf.setIpAddress("127.0.0.1");
-
- JobStatusResponse jobStatusResponse = new JobStatusResponse();
- ResponseDescriptor descriptor = new ResponseDescriptor();
- descriptor.setResponseId("7512eb3feb5249eca5ddd742fedddd39");
- descriptor.setProgress(20);
- descriptor.setStatusDescription("Initiating VNF Instance");
- descriptor.setStatus("processing");
- jobStatusResponse.setResponseDescriptor(descriptor);
-
- TokenResponse token = new TokenResponse();
- token.setAccessToken("7512eb3feb5249eca5ddd742fedddd39");
- token.setExpires(1800);
-
- postStream = new ByteArrayInputStream(marshal(jobStatusResponse).getBytes(UTF_8));
- tokenStream = new ByteArrayInputStream(marshal(token).getBytes(UTF_8));
-
- ResourceOperationStatus operationStatus = new ResourceOperationStatus();
- operationStatus.setOperationId("4b45d919816ccaa2b762df5120f72067");
- operationStatus.setResourceTemplateUUID("8ee5926d-720b-4bb2-86f9-d20e921c143b");
- operationStatus.setServiceId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- operationStatus.setOperType(ActionType.ALLOCATE.toString());
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- nbiRequest.setResponseId("7512eb3feb5249eca5ddd742fedddd39");
- List<ResourceOperationStatus> optional = new ArrayList<>();
- optional.add(operationStatus);
-
- doAnswer(invocation -> optional).when(repository).findByServiceIdAndOperationId(any(), any());
-
- createCommonMock(200, nssmf);
-
- ResponseEntity res = nssiManagerService.queryJobStatus(nbiRequest, "4b45d919816ccaa2b762df5120f72067");
- assertNotNull(res);
- assertNotNull(res.getBody());
- JobStatusResponse allRes = unMarshal(res.getBody().toString(), JobStatusResponse.class);
- assertEquals(allRes.getResponseDescriptor().getProgress(), 20);
- assertEquals(allRes.getResponseDescriptor().getStatus(), "processing");
- assertEquals(allRes.getResponseDescriptor().getResponseId(), "7512eb3feb5249eca5ddd742fedddd39");
-
- }
-
- @Test
- public void queryNSSISelectionCapability() throws Exception {
-
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
- ResponseEntity res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
- assertNotNull(res);
- assertNotNull(res.getBody());
- Map allRes = unMarshal(res.getBody().toString(), Map.class);
- assertEquals(allRes.get("selection"), "NSMF");
-
- System.out.println(res);
-
- nbiRequest.getEsrInfo().setVendor(NssmfAdapterConsts.ONAP_INTERNAL_TAG);
- res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
- assertNotNull(res);
- assertNotNull(res.getBody());
- allRes = unMarshal(res.getBody().toString(), Map.class);
- assertEquals(allRes.get("selection"), "NSSMF");
-
- System.out.println(res);
-
- nbiRequest.getEsrInfo().setNetworkType(NetworkType.ACCESS);
- res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
- assertNotNull(res);
- assertNotNull(res.getBody());
- allRes = unMarshal(res.getBody().toString(), Map.class);
- assertEquals(allRes.get("selection"), "NSSMF");
-
- System.out.println(res);
- }
-
- private NssmfAdapterNBIRequest createNbiRequest() {
- NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest();
- EsrInfo esrInfo = new EsrInfo();
- esrInfo.setVendor("huawei");
- esrInfo.setNetworkType(CORE);
- ServiceInfo serviceInfo = new ServiceInfo();
- serviceInfo.setServiceUuid("8ee5926d-720b-4bb2-86f9-d20e921c143b");
- serviceInfo.setServiceInvariantUuid("e75698d9-925a-4cdd-a6c0-edacbe6a0b51");
- serviceInfo.setGlobalSubscriberId("5GCustomer");
- serviceInfo.setServiceType("5G");
- serviceInfo.setNsiId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
- nbiRequest.setEsrInfo(esrInfo);
- nbiRequest.setServiceInfo(serviceInfo);
- return nbiRequest;
- }
-
- @Test
- public void querySubnetCapability() {
- NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
-
- QuerySubnetCapability subnetCapabilityQuery = new QuerySubnetCapability();
- List<String> subnetTypes = Arrays.asList("TN-FH", "TN-MH", "TN-BH");
- subnetCapabilityQuery.setSubnetTypes(subnetTypes);
- nbiRequest.setSubnetCapabilityQuery(subnetCapabilityQuery);
- ResponseEntity res = nssiManagerService.queryNSSISelectionCapability(nbiRequest);
- assertNotNull(res);
- assertNotNull(res.getBody());
- }
-}
diff --git a/adapters/mso-nssmf-adapter/src/test/resources/application-test.yaml b/adapters/mso-nssmf-adapter/src/test/resources/application-test.yaml
deleted file mode 100644
index fa323e887b..0000000000
--- a/adapters/mso-nssmf-adapter/src/test/resources/application-test.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- endpoint: https://aai.onap:30233
-logging:
- path: logs
-
-spring:
- datasource:
- username: root
- password: 123456
- driver-class-name: org.mariadb.jdbc.Driver
- initialization-mode: always
- url: jdbc:mariadb://49.232.146.162:8989/requestdb
- jpa:
- generate-ddl: false
- show-sql: false
- hibernate:
- ddl-auto: none
- naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- enable-lazy-load-no-trans: true
- database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- security:
- usercredentials:
- - username: bpel
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: BPEL-Client
- - username: mso_admin
- password: '$2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke'
- role: ACTUATOR
-server:
- port: 8080
- tomcat:
- max-threads: 50
-
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
- site-name: localSite
- logPath: ./logs/nssmf
- adapters:
- requestDb:
- endpoint: https://so-request-db-adapter.{{ include "common.namespace" . }}:8083
- auth: Basic YnBlbDpwYXNzd29yZDEk
- infra:
- endpoint: https://so.{{ include "common.namespace" . }}:8080
- auth: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use. \ No newline at end of file
diff --git a/adapters/mso-oof-adapter/.gitignore b/adapters/mso-oof-adapter/.gitignore
deleted file mode 100644
index 549e00a2a9..0000000000
--- a/adapters/mso-oof-adapter/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/adapters/mso-oof-adapter/pom.xml b/adapters/mso-oof-adapter/pom.xml
deleted file mode 100644
index a986052551..0000000000
--- a/adapters/mso-oof-adapter/pom.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-oof-adapter</artifactId>
- <name>mso-oof-adapter</name>
- <description>mso oof adapter</description>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-webflux</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.adapters.oof.MsoOofAdapterApplication</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <excludes>
- <exclude>**/*.p12</exclude>
- <exclude>**/*.jks</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>false</filtering>
- <includes>
- <include>**/*.p12</include>
- <include>**/*.jks</include>
- </includes>
- </resource>
- </resources>
- </build>
-</project>
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/MsoOofAdapterApplication.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/MsoOofAdapterApplication.java
deleted file mode 100644
index 78fbe6e271..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/MsoOofAdapterApplication.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class MsoOofAdapterApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(MsoOofAdapterApplication.class, args);
- }
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/OofAdapterClientConfig.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/OofAdapterClientConfig.java
deleted file mode 100644
index 5e13c592b7..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/OofAdapterClientConfig.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClients;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-@Configuration
-public class OofAdapterClientConfig {
-
- @Bean
- public RestTemplate getRestTemplate() {
- HttpComponentsClientHttpRequestFactory requestFactory =
- new HttpComponentsClientHttpRequestFactory(getHttpsClient());
- requestFactory.setConnectTimeout(60000);
- requestFactory.setReadTimeout(60000);
- return new RestTemplate(requestFactory);
- }
-
- private HttpClient getHttpsClient() {
- TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
- public java.security.cert.X509Certificate[] getAcceptedIssuers() {
- return null;
- }
-
- public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
-
- public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
- }};
-
- // Install the all-trusting trust manager
- try {
- SSLContext sc = SSLContext.getInstance("SSL");
- sc.init(null, trustAllCerts, new java.security.SecureRandom());
- HostnameVerifier hostnameVerifier = new HostnameVerifier() {
- @Override
- public boolean verify(String hostname, SSLSession session) {
- return true;
- }
- };
- SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sc,
- new String[] {"TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"}, null, hostnameVerifier);
- return HttpClients.custom().setSSLSocketFactory(sslsf).build();
- } catch (Exception e) {
- throw new IllegalArgumentException(e);
- }
- }
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/WebSecurityConfig.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/WebSecurityConfig.java
deleted file mode 100644
index 9a07b0119f..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/WebSecurityConfig.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-
-@EnableWebSecurity
-@Configuration
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.csrf().disable();
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/constants/Constants.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/constants/Constants.java
deleted file mode 100644
index 5d91bf38f8..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/constants/Constants.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.oof.constants;
-
-public class Constants {
-
- public static final String OOF_ENDPOINT = "mso.oof.endpoint";
- public static final String OOF_AUTH = "mso.oof.auth";
- public static final String MSO_KEY = "mso.msoKey";
- public static final String CAMUNDA_URL = "mso.camundaURL";
- public static final String CAMUNDA_AUTH = "mso.camundaAuth";
- public static final String WORKFLOW_MESSAGE_ENPOINT = "mso.workflow.message.endpoint";
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/exceptions/OofAdapterException.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/exceptions/OofAdapterException.java
deleted file mode 100644
index ff16d7442c..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/exceptions/OofAdapterException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.exceptions;
-
-public class OofAdapterException extends Exception {
-
- private static final long serialVersionUID = 1L;
-
- public OofAdapterException(String message) {
- super(message);
- }
-
- public OofAdapterException(Throwable e) {
- super(e);
- }
-
- public OofAdapterException(String message, Throwable e) {
- super(message, e);
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/model/OofRequest.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/model/OofRequest.java
deleted file mode 100644
index 1eb694fd96..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/model/OofRequest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.oof.model;
-
-/**
- * POJO representing generic request payload from BPMN processes
- */
-public class OofRequest {
-
- private String apiPath;
-
- private Object requestDetails;
-
- public String getApiPath() {
- return apiPath;
- }
-
- public void setApiPath(String apiPath) {
- this.apiPath = apiPath;
- }
-
- public Object getRequestDetails() {
- return requestDetails;
- }
-
- public void setRequestDetails(Object requestDetails) {
- this.requestDetails = requestDetails;
- }
-
- @Override
- public String toString() {
- return "{\"apiPath:\"\"" + apiPath + "\"\", requestDetails:\"\"" + requestDetails + "}";
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofCallbackHandler.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofCallbackHandler.java
deleted file mode 100644
index f8da6c6d2e..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofCallbackHandler.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.rest;
-
-import org.onap.so.adapters.oof.exceptions.OofAdapterException;
-import org.onap.so.adapters.oof.utils.OofUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * A generic call back handler to receive async response from OOF
- */
-@RestController
-@RequestMapping("/so/adapters/oof/callback/")
-public class OofCallbackHandler {
-
- @Autowired
- OofUtils utils;
-
- @Autowired
- RestTemplate restTemplate;
-
- private static final Logger logger = LoggerFactory.getLogger(OofCallbackHandler.class);
-
- @PostMapping("/{version:[vV][1]}/{messageEventName}/{correlator}")
- public ResponseEntity<String> processCallback(@PathVariable("messageEventName") String messageEventName,
- @PathVariable("correlator") String correlator, @RequestBody String oofCallbackRequest)
- throws OofAdapterException {
- logger.debug("Oof Async response received for event : {} , callback request body : {} ", messageEventName,
- oofCallbackRequest);
- String camundaMsgUrl = utils.getCamundaMsgUrl(messageEventName, correlator);
- HttpEntity<String> request = new HttpEntity<String>(oofCallbackRequest, utils.getCamundaHeaders());
- try {
- ResponseEntity<String> response = restTemplate.postForEntity(camundaMsgUrl, request, String.class);
- logger.debug("Response from BPMN : {} ", response);
- return response;
- } catch (Exception e) {
- logger.warn("Error injecting message event into BPMN {} {} ", e.getCause(), e.getMessage());
- throw new OofAdapterException(e);
- }
-
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofClient.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofClient.java
deleted file mode 100644
index 3a91ec495e..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/rest/OofClient.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.rest;
-
-import org.onap.so.adapters.oof.exceptions.OofAdapterException;
-import org.onap.so.adapters.oof.model.OofRequest;
-import org.onap.so.adapters.oof.utils.OofUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * A generic client class to call OOF with request from BPMN
- */
-@RestController
-@RequestMapping("/so/adapters/oof/")
-public class OofClient {
-
- @Autowired
- RestTemplate restTemplate;
-
- @Autowired
- OofUtils utils;
-
- private static final Logger logger = LoggerFactory.getLogger(OofClient.class);
-
- @PostMapping("/{version:[vV][1]}")
- public ResponseEntity<String> callOof(@RequestBody OofRequest oofRequest) throws OofAdapterException {
- try {
- logger.debug("Received Request from BPEL {} ", oofRequest);
- String oofUrl = utils.getOofurl(oofRequest.getApiPath());
- HttpEntity<?> request = new HttpEntity<>(oofRequest.getRequestDetails(), utils.getOofHttpHeaders());
- ResponseEntity<String> response = restTemplate.postForEntity(oofUrl, request, String.class);
- logger.debug("Response from OOF : {} ", response);
- return response;
- } catch (Exception e) {
- logger.warn("Error while calling OOF {} {} ", e.getCause(), e.getMessage());
- throw new OofAdapterException(e);
- }
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/utils/OofUtils.java b/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/utils/OofUtils.java
deleted file mode 100644
index f45baa30fe..0000000000
--- a/adapters/mso-oof-adapter/src/main/java/org/onap/so/adapters/oof/utils/OofUtils.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.utils;
-
-import java.security.GeneralSecurityException;
-import java.util.ArrayList;
-import java.util.List;
-import javax.xml.bind.DatatypeConverter;
-import org.onap.so.adapters.oof.constants.Constants;
-import org.onap.so.utils.CryptoUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Component;
-
-@Component
-public class OofUtils {
- private static Logger logger = LoggerFactory.getLogger(OofUtils.class);
-
- @Autowired
- private Environment env;
-
- /**
- * @param messageEventName
- * @param correlator
- * @return
- */
- public String getCamundaMsgUrl(String messageEventName, String correlator) {
- System.out.println(env);
- String camundaMsgUrl = new StringBuilder(env.getRequiredProperty(Constants.WORKFLOW_MESSAGE_ENPOINT))
- .append("/").append(messageEventName).append("/").append(correlator).toString();
- return camundaMsgUrl;
- }
-
- /**
- * @return
- */
- public HttpHeaders getCamundaHeaders() {
- HttpHeaders headers = new HttpHeaders();
- List<MediaType> acceptableMediaTypes = new ArrayList<>();
- acceptableMediaTypes.add(MediaType.ALL);
- headers.setAccept(acceptableMediaTypes);
- headers.setContentType(MediaType.APPLICATION_JSON);
- headers.add(HttpHeaders.AUTHORIZATION, addAuthorizationHeader(env.getRequiredProperty(Constants.CAMUNDA_AUTH),
- env.getRequiredProperty(Constants.MSO_KEY)));
- return headers;
- }
-
- /**
- * @param auth
- * @param msoKey
- * @return
- */
- protected String addAuthorizationHeader(String auth, String msoKey) {
- String basicAuth = null;
- try {
- String userCredentials = CryptoUtils.decrypt(auth, msoKey);
- if (userCredentials != null) {
- basicAuth = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes());
- }
- } catch (GeneralSecurityException e) {
- logger.error("Security exception", e);
- }
- return basicAuth;
- }
-
- /**
- * @return
- * @throws Exception
- */
- public HttpHeaders getOofHttpHeaders() throws Exception {
- HttpHeaders headers = new HttpHeaders();
- List<MediaType> acceptableMediaTypes = new ArrayList<>();
- acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
- headers.setAccept(acceptableMediaTypes);
- headers.setContentType(MediaType.APPLICATION_JSON);
- return headers;
- }
-
- /**
- * @param apiPath
- * @return
- */
- public String getOofurl(String apiPath) {
- return new StringBuilder(env.getRequiredProperty(Constants.OOF_ENDPOINT)).append(apiPath).toString();
- }
-
-
-}
diff --git a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofCallbackHandlerTest.java b/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofCallbackHandlerTest.java
deleted file mode 100644
index 3a2f7f5e11..0000000000
--- a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofCallbackHandlerTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.rest;
-
-import static org.mockito.Mockito.when;
-import java.io.File;
-import java.io.IOException;
-import org.junit.Before;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-import org.onap.so.adapters.oof.utils.OofUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-class OofCallbackHandlerTest {
-
- @Autowired
- TestRestTemplate restTemplate;
-
- @MockBean
- OofUtils oofutils;
-
- @MockBean
- RestTemplate mockrestTemplate;
-
- @Before
- void prepareMocks() throws Exception {
- ResponseEntity<Object> responseEntity = new ResponseEntity<>(HttpStatus.OK);
- when(oofutils.getCamundaHeaders()).thenReturn(new HttpHeaders());
- when(oofutils.getCamundaMsgUrl(Mockito.anyString(), Mockito.anyString())).thenReturn("oofurl");
- when(mockrestTemplate.postForEntity(Mockito.anyString(), Mockito.any(), Mockito.any()))
- .thenReturn(responseEntity);
- }
-
- @Test
- void processCallbackTest() throws Exception {
- Object request = prepareOofResponse();
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_JSON);
- HttpEntity<Object> entity = new HttpEntity<Object>(request, headers);
- ResponseEntity<String> response = restTemplate.postForEntity(
- "/so/adapters/oof/callback/v1/NSISelectionResponse/d88da85c-d9e8-4f73-b837-3a72a431622a", entity,
- String.class);
- Assertions.assertEquals(HttpStatus.OK, response.getStatusCode());
- }
-
- private Object prepareOofResponse() throws IOException {
- File file = new ClassPathResource("testInputs/NsiSelectionResponse.json").getFile();
- ObjectMapper objectMapper = new ObjectMapper();
- return objectMapper.readValue(file, Object.class);
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofClientTest.java b/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofClientTest.java
deleted file mode 100644
index ff38a9af63..0000000000
--- a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/rest/OofClientTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.rest;
-
-import static org.mockito.Mockito.when;
-import java.io.File;
-import java.io.IOException;
-import org.junit.Before;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.onap.so.adapters.oof.model.OofRequest;
-import org.onap.so.adapters.oof.utils.OofUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-class OofClientTest {
-
- @Autowired
- TestRestTemplate restTemplate;
-
- @MockBean
- OofUtils oofutils;
-
- @MockBean
- RestTemplate mockrestTemplate;
-
- @Before
- void prepareMocks() throws Exception {
- ResponseEntity<Object> responseEntity = new ResponseEntity<>(HttpStatus.OK);
- when(oofutils.getOofHttpHeaders()).thenReturn(new HttpHeaders());
- when(oofutils.getOofurl(Mockito.anyString())).thenReturn("oofurl");
- when(mockrestTemplate.postForEntity(Mockito.anyString(), Mockito.any(), Mockito.any()))
- .thenReturn(responseEntity);
- }
-
- @Test
- void callOofTest() throws Exception {
- OofRequest request = prepareOofRequest();
- System.out.println(request);
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_JSON);
- HttpEntity<OofRequest> entity = new HttpEntity<OofRequest>(request, headers);
- ResponseEntity<String> response = restTemplate.postForEntity("/so/adapters/oof/v1", entity, String.class);
- Assertions.assertEquals(HttpStatus.OK, response.getStatusCode());
- }
-
- private OofRequest prepareOofRequest() throws IOException {
- File file = new ClassPathResource("testInputs/NsiSelectionOofRequest.json").getFile();
- ObjectMapper objectMapper = new ObjectMapper();
- return objectMapper.readValue(file, OofRequest.class);
- }
-
-
-}
diff --git a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/utils/OofUtilsTest.java b/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/utils/OofUtilsTest.java
deleted file mode 100644
index e68fa10c3e..0000000000
--- a/adapters/mso-oof-adapter/src/test/java/org/onap/so/adapters/oof/utils/OofUtilsTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2020 Wipro Limited. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.oof.utils;
-
-import static org.mockito.Mockito.when;
-import java.security.GeneralSecurityException;
-import javax.xml.bind.DatatypeConverter;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.onap.so.utils.CryptoUtils;
-import org.springframework.core.env.Environment;
-import org.springframework.http.HttpHeaders;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@ExtendWith(SpringExtension.class)
-class OofUtilsTest {
-
- @InjectMocks
- OofUtils oofUtils;
-
- @Mock
- Environment env;
-
- @Test
- void testGetCamundaMsgUrl() {
- when(env.getRequiredProperty(Mockito.anyString())).thenReturn("dummyString");
- String camundamsgUrl = oofUtils.getCamundaMsgUrl("samplemessage", "sampleCorrelator");
- Assertions.assertNotNull(camundamsgUrl);
- }
-
-
- void testGetCamundaHeaders() throws GeneralSecurityException {
- when(env.getRequiredProperty(Mockito.anyString())).thenReturn("dummyString");
- when(CryptoUtils.decrypt(Mockito.anyString(), Mockito.anyString())).thenReturn("decryptedString");
- HttpHeaders headers = oofUtils.getCamundaHeaders();
- Assertions.assertNotNull(headers);
- }
-
-
- @Test
- void testGetOofHttpHeaders() throws Exception {
- when(env.getRequiredProperty(Mockito.anyString())).thenReturn("dummyString");
- HttpHeaders headers = oofUtils.getOofHttpHeaders();
- Assertions.assertNotNull(headers);
- }
-
- @Test
- void testGetOofurl() {
- when(env.getRequiredProperty(Mockito.anyString())).thenReturn("dummyString");
- String oofurl = oofUtils.getOofurl("/api/v1/");
- Assertions.assertNotNull(oofurl);
- }
-
-}
diff --git a/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionOofRequest.json b/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionOofRequest.json
deleted file mode 100644
index 569aae9f38..0000000000
--- a/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionOofRequest.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "apiPath":"/api/oof/selection/nsi/v1",
- "requestDetails":{
- "serviceProfile":{
- "blob":"content"
- },
- "requestInfo":{
- "transactionId":"d290f1ee-6c54-4b01-90e6-d701748f0851",
- "requestId":"d290f1ee-6c54-4b01-90e6-d701748f0851",
- "callbackUrl":"myDomain.com/myCallback",
- "callbackHeader":{
- "blob":"content"
- },
- "sourceId":"d290f1ee-6c54-4b01-90e6-d701748f0851",
- "timeout":5,
- "numSolutions":1
- },
- "NSTInfo":{
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa1",
- "invariantUUID":"7ua85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-nst"
- },
- "NSSTInfo":[
- {
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa2",
- "invariantUUID":"2fa85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-an-nf"
- },
- {
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa3",
- "invariantUUID":"4fa85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-cn"
- },
- {
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa4",
- "invariantUUID":"5ta85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-tn-fh"
- },
- {
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa5",
- "invariantUUID":"6ya85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-tn-mh"
- },
- {
- "UUID":"3fa85f64-5717-4562-b3fc-2c963f66afa7",
- "invariantUUID":"7ua85f64-5717-4562-b3fc-2c963f66afa6",
- "name":"embb-tn-bh"
- }
- ],
- "preferReuse":false,
- "subnetCapabilities":[
- {
- "domainType":"AN-NF",
- "capabilityDetails":{
- "blob":"content"
- }
- },
- {
- "domainType":"CN",
- "capabilityDetails":{
- "blob":"content"
- }
- },
- {
- "domainType":"TN-FH",
- "capabilityDetails":{
- "blob":"content"
- }
- },
- {
- "domainType":"TN-MH",
- "capabilityDetails":{
- "blob":"content"
- }
- },
- {
- "domainType":"TN-BH",
- "capabilityDetails":{
- "blob":"content"
- }
- }
- ]
-}
-} \ No newline at end of file
diff --git a/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionResponse.json b/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionResponse.json
deleted file mode 100644
index 4ddca3eaf9..0000000000
--- a/adapters/mso-oof-adapter/src/test/resources/testInputs/NsiSelectionResponse.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "transactionId": "s4r0f1ee-6c54-4b01-90e6-d701748f0851",
- "requestId": "r500f1ee-6c54-4b01-90e6-d701748f0851",
- "requestStatus": "completed",
- "solutions": [
- {
- "existingNSI": false,
- "newNSISolution": {
- "sliceProfiles": [
- {
- "domainType":"CN"
- }
- ],
- "matchLevel": {
- "blob": "content"
- }
- }
- }
- ]
-}
diff --git a/adapters/mso-openstack-adapters/pom.xml b/adapters/mso-openstack-adapters/pom.xml
index 7d5e8cc6fd..e975425852 100644
--- a/adapters/mso-openstack-adapters/pom.xml
+++ b/adapters/mso-openstack-adapters/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-openstack-adapters</artifactId>
<packaging>jar</packaging>
@@ -15,7 +15,6 @@
</properties>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
-
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
@@ -26,9 +25,7 @@
<executions>
<execution>
<goals>
- <goal>
- repackage
- </goal>
+ <goal>repackage</goal>
</goals>
</execution>
</executions>
@@ -87,8 +84,6 @@
</executions>
</plugin>
</plugins>
-
-
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build
@@ -140,17 +135,7 @@
</plugins>
</pluginManagement>
</build>
-
<dependencies>
- <!-- added for spring boot support -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
@@ -177,14 +162,6 @@
<artifactId>janino</artifactId>
<version>2.5.15</version>
</dependency>
-
- <!-- end added for spring boot support -->
-
- <dependency>
- <groupId>org.pacesys</groupId>
- <artifactId>openstack4j-core</artifactId>
- <version>3.2.0</version>
- </dependency>
<dependency>
<groupId>org.pacesys.openstack4j.connectors</groupId>
<artifactId>openstack4j-jersey2</artifactId>
@@ -210,7 +187,6 @@
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
-
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
@@ -221,14 +197,11 @@
<artifactId>jsr305</artifactId>
<version>1.3.9</version>
</dependency>
-
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.1</version>
</dependency>
-
- <!-- added for unit testing -->
<dependency>
<groupId>org.onap.so.adapters</groupId>
<artifactId>mso-adapter-utils</artifactId>
@@ -249,14 +222,9 @@
<artifactId>mariadb-java-client</artifactId>
</dependency>
<dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -278,12 +246,16 @@
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-external-task-client</artifactId>
- <version>1.1.1</version>
+ <version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.github.seancfoley</groupId>
<artifactId>ipaddress</artifactId>
<version>2.0.0</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-validation</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/adapters/mso-requests-db-adapter/pom.xml b/adapters/mso-requests-db-adapter/pom.xml
index 66b9a6b993..a488558610 100644
--- a/adapters/mso-requests-db-adapter/pom.xml
+++ b/adapters/mso-requests-db-adapter/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so.adapters</groupId>
@@ -16,11 +16,7 @@
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
+ <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
@@ -67,7 +63,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -90,17 +86,9 @@
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-rest</artifactId>
- </dependency>
- <dependency>
<groupId>org.onap.so</groupId>
<artifactId>cxf-logging</artifactId>
<version>${project.version}</version>
@@ -136,7 +124,6 @@
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>3.3.3</version>
</dependency>
-
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-ri</artifactId>
@@ -184,7 +171,6 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
- <version>${springboot.version}</version>
<configuration>
<mainClass>org.onap.so.adapters.requestsdb.application.MSORequestDBApplication</mainClass>
</configuration>
diff --git a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/ArchiveInfraRequestsScheduler.java b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/ArchiveInfraRequestsScheduler.java
index 4fe49e38dd..89c26232bd 100644
--- a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/ArchiveInfraRequestsScheduler.java
+++ b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/ArchiveInfraRequestsScheduler.java
@@ -78,7 +78,9 @@ public class ArchiveInfraRequestsScheduler {
+ "-" + calendar.get(Calendar.YEAR));
List<InfraActiveRequests> requestsByEndTime = new ArrayList<>();
- PageRequest pageRequest = new PageRequest(0, 100);
+
+ PageRequest pageRequest = PageRequest.of(0, 100); // Could use sorting here
+
do {
requestsByEndTime = infraActiveRepo.findByEndTimeLessThan(archivingDate, pageRequest);
logger.debug("{} requests to be archived based on End Time", requestsByEndTime.size());
diff --git a/adapters/mso-sdnc-adapter/pom.xml b/adapters/mso-sdnc-adapter/pom.xml
index 590121966e..cad9c9fbc0 100644
--- a/adapters/mso-sdnc-adapter/pom.xml
+++ b/adapters/mso-sdnc-adapter/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-sdnc-adapter</artifactId>
<properties>
@@ -131,45 +131,20 @@
</dependency>
</dependencies>
</dependencyManagement>
-
<dependencies>
<dependency>
- <groupId>com.sun.activation</groupId>
- <artifactId>javax.activation</artifactId>
- <version>1.2.0</version>
- </dependency>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jersey2-jaxrs</artifactId>
<version>1.5.16</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
+ <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.onap.so.adapters</groupId>
@@ -206,10 +181,6 @@
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
diff --git a/adapters/mso-sdnc-adapter/src/test/resources/application-test.properties b/adapters/mso-sdnc-adapter/src/test/resources/application-test.properties
index e4f6903e23..0c77e30fe6 100644
--- a/adapters/mso-sdnc-adapter/src/test/resources/application-test.properties
+++ b/adapters/mso-sdnc-adapter/src/test/resources/application-test.properties
@@ -88,6 +88,19 @@ org.onap.so.adapters.sdnc..security-zone-topology-operation.deactivate=POST|2700
server.port=8080
server.tomcat.max-threads=50
ssl-enable: false
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.datasource.url=jdbc:mariadb://localhost:3307/camundabpmn
+spring.datasource.username=root
+spring.datasource.password=password
+spring.datasource.initialization-mode=always
+spring.jpa.generate-ddl=false
+spring.jpa.hibernate.ddl-auto=none
+spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
+spring.jpa.hibernate.enable-lazy-load-no-trans=true
+spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
+mariaDB4j.dataDir=
+mariaDB4j.port=3307
+mariaDB4j.databaseName=camundabpmn
spring.security.usercredentials[0].username=test
spring.security.usercredentials[0].password=$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu
spring.security.usercredentials[0].role=SDNC-Client
diff --git a/adapters/mso-vfc-adapter/.springBeans b/adapters/mso-vfc-adapter/.springBeans
deleted file mode 100644
index 7f46cc45af..0000000000
--- a/adapters/mso-vfc-adapter/.springBeans
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beansProjectDescription>
- <version>1</version>
- <pluginVersion><![CDATA[3.8.4.201703310634-RELEASE]]></pluginVersion>
- <configSuffixes>
- <configSuffix><![CDATA[xml]]></configSuffix>
- </configSuffixes>
- <enableImports><![CDATA[false]]></enableImports>
- <configs>
- <config>java:org.onap.so.adapters.vfc.MSOVfcApplication</config>
- </configs>
- <autoconfigs>
- </autoconfigs>
- <configSets>
- </configSets>
-</beansProjectDescription> \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/README b/adapters/mso-vfc-adapter/README
deleted file mode 100644
index 233430c16a..0000000000
--- a/adapters/mso-vfc-adapter/README
+++ /dev/null
@@ -1 +0,0 @@
-This is the adapter for VFC \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/pom.xml b/adapters/mso-vfc-adapter/pom.xml
deleted file mode 100644
index eae6745866..0000000000
--- a/adapters/mso-vfc-adapter/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-vfc-adapter</artifactId>
- <name>mso-vfc-adapter</name>
- <description>Web service endpoint for vfc operations</description>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.adapters.vfc.MSOVfcApplication</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-spring-boot-starter-jaxrs</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db-repositories</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.vorburger.mariaDB4j</groupId>
- <artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <optional>true</optional>
- </dependency>
- </dependencies>
-</project>
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/CXFConfiguration.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/CXFConfiguration.java
deleted file mode 100644
index dd875c573e..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/CXFConfiguration.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc;
-
-import java.util.Arrays;
-import org.apache.cxf.Bus;
-import org.apache.cxf.endpoint.Server;
-import org.apache.cxf.feature.LoggingFeature;
-import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
-import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
-import org.apache.cxf.transport.servlet.CXFServlet;
-import org.onap.so.adapters.vfc.rest.VfcAdapterRest;
-import org.onap.so.logging.jaxrs.filter.SOAuditLogContainerFilter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.web.servlet.ServletRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
-
-
-@Configuration
-public class CXFConfiguration {
-
- @Autowired
- private Bus bus;
-
- @Autowired
- private VfcAdapterRest vfcAdapterRest;
-
- @Autowired
- private SOAuditLogContainerFilter soAuditLogContainerFilter;
-
- @Autowired
- private ObjectMapper mapper;
-
- @Bean
- public ServletRegistrationBean cxfServlet() {
- return new ServletRegistrationBean(new CXFServlet(), "/services/*");
- }
-
- @Bean
- public Server rsServer() {
- JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
- endpoint.setBus(bus);
- endpoint.setServiceBeans(Arrays.<Object>asList(vfcAdapterRest));
- endpoint.setAddress("/");
- endpoint.setFeatures(Arrays.asList(createSwaggerFeature(), new LoggingFeature()));
- endpoint.setProviders(Arrays.asList(new JacksonJsonProvider(mapper), soAuditLogContainerFilter));
- return endpoint.create();
- }
-
- @Bean
- public Swagger2Feature createSwaggerFeature() {
- Swagger2Feature swagger2Feature = new Swagger2Feature();
- swagger2Feature.setPrettyPrint(true);
- swagger2Feature.setTitle("SO VFC Adapter");
- swagger2Feature.setContact("The ONAP SO team");
- swagger2Feature.setDescription("This project is the SO Orchestration Engine");
- swagger2Feature.setVersion("1.0.0");
- swagger2Feature.setResourcePackage("org.onap.so.adapters.vfc.rest");
- swagger2Feature.setScan(true);
- return swagger2Feature;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/MSOVfcApplication.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/MSOVfcApplication.java
deleted file mode 100644
index 62234f910d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/MSOVfcApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc;
-
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-
-
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-public class MSOVfcApplication {
-
- public static void main(String... args) {
- SpringApplication.run(MSOVfcApplication.class, args);
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/RequestDBConfig.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/RequestDBConfig.java
deleted file mode 100644
index d7397c8df3..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/RequestDBConfig.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc;
-
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.annotation.Profile;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@Profile({"!test"})
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(entityManagerFactoryRef = "requestEntityManagerFactory",
- transactionManagerRef = "requestTransactionManager", basePackages = {"org.onap.so.db.request.data.repository"})
-public class RequestDBConfig {
-
- @Primary
- @Bean(name = "requestDataSource")
- @ConfigurationProperties(prefix = "spring.datasource")
- public DataSource dataSource() {
- return DataSourceBuilder.create().build();
- }
-
- @Primary
- @Bean(name = "requestEntityManagerFactory")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
- @Qualifier("requestDataSource") DataSource dataSource) {
- return builder.dataSource(dataSource).packages("org.onap.so.db.request.beans").persistenceUnit("requestDB")
- .build();
- }
-
- @Primary
- @Bean(name = "requestTransactionManager")
- public PlatformTransactionManager transactionManager(
- @Qualifier("requestEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
- return new JpaTransactionManager(entityManagerFactory);
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java
deleted file mode 100644
index 51a0fc0c97..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.constant;
-
-/**
- * CommonConstant <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-public class CommonConstant {
-
- public static final String STR_EMPTY = "";
-
- public static final String NFVO_CREATE_URL = "/api/nslcm/v1/ns";
- public static final String SOL005_NFVO_CREATE_URL = "/api/nslcm/v1/ns_instances";
-
- public static final String NFVO_INSTANTIATE_URL = "/api/nslcm/v1/ns/%s/instantiate";
- public static final String SOL005_NFVO_INSTANTIATE_URL = "/api/nslcm/v1/ns_instances/%s/instantiate";
-
- public static final String NFVO_TERMINATE_URL = "/api/nslcm/v1/ns/%s/terminate";
- public static final String SOL005_NFVO_TERMINATE_URL = "/api/nslcm/v1/ns_instances/%s/terminate";
-
- public static final String NFVO_DELETE_URL = "/api/nslcm/v1/ns/%s";
- public static final String SOL005_NFVO_DELETE_URL = "/api/nslcm/v1/ns_instances/%s";
-
- public static final String NFVO_QUERY_URL = "/api/nslcm/v1/jobs/%s";
- public static final String SOL005_NFVO_QUERY_URL = "/api/nslcm/v1/ns_lcm_op_occs/%s";
-
- public static final String NFVO_SCALE_URL = "/api/nslcm/v1/ns/%s/scale";
-
- public enum operationState {
- PROCESSING, COMPLETED, PARTIALLY_COMPLETED, FAILED_TEMP, FAILED, ROLLING_BACK, ROLLED_BACK
- }
- public enum lcmOperationType {
- INSTANTIATE, SCALE, UPDATE, TERMINATE, HEAL
- };
- public enum cancelMode {
- GRACEFUL, FORCEFUL
- };
-
- /**
- *
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
- public static class MethodType {
-
- public static final String POST = "post";
-
- public static final String DELETE = "delete";
-
- public static final String PUT = "put";
-
- public static final String GET = "get";
-
- private MethodType() {
-
- }
- }
-
- /**
- *
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
- public static class Step {
-
- public static final String CREATE = "create";
-
- public static final String INSTANTIATE = "instantiate";
-
- public static final String STATUS = "status";
-
- public static final String TERMINATE = "terminate";
-
- public static final String QUERY = "query";
-
- public static final String DELETE = "delete";
-
- public static final String SCALE = "scale";
-
- private Step() {
-
- }
-
- }
-
-
- public static final String NSD_ID = "nsdId";
-
- public static final String NS_NAME = "nsName";
-
- public static final String DESC = "description";
-
- public static final String NS_INSTANCE_ID = "nsInstanceId";
- public static final String SOL005_NS_INSTANCE_ID = "id";
-
-
- public static final String JOB_ID = "jobId";
- public static final String JOB_URI = "Location";
-
- public static final String ADDITIONAL_PARAM_FOR_NS = "additionalParamForNs";
-
- public static final String LOCAL_HOST = "localhost";
-
- public static class StatusDesc {
-
- public static final String INSTANTIATE_NS_FAILED = "instantiate ns failed";
-
- public static final String QUERY_JOB_STATUS_FAILED = "query job status failed";
-
- public static final String TERMINATE_NS_FAILED = "terminate ns failed";
-
- public static final String DELETE_NS_FAILED = "delete ns failed";
-
- public static final String CREATE_NS_FAILED = "create ns failed";
-
- public static final String SCALE_NS_FAILED = "scale ns failed";
-
- private StatusDesc() {
-
- }
- }
-
- private CommonConstant() {
-
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/DriverExceptionID.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/DriverExceptionID.java
deleted file mode 100644
index 61330027c5..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/DriverExceptionID.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.constant;
-
-/**
- * <br>
- * <p>
- * </p>
- * identification of adapter exception
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class DriverExceptionID {
-
- public static final String INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION =
- "Invalid response from instantiate operation";
-
- public static final String INVALID_RESPONSEE_FROM_CREATE_OPERATION = "Invalid response from create operation";
-
- public static final String FAIL_TO_INSTANTIATE_NS = "Fail to instantiate ns";
-
- public static final String FAIL_TO_CREATE_NS = "Fail to create ns";
-
- public static final String INVALID_RESPONSE_FROM_TERMINATE_OPERATION = "Invalid response from terminate operation";
-
- public static final String FAIL_TO_DELETE_NS = "Fail to delete ns";
-
- public static final String FAIL_TO_TERMINATE_NS = "Fail to terminate ns";
-
- public static final String JOB_STATUS_ERROR = "Job status error";
-
- public static final String FAIL_TO_QUERY_JOB_STATUS = "Fail to query job status";
-
- public static final String FAIL_TO_SCALE_NS = "Fail to scale network service";
-
- public static final String INVALID_RESPONSE_FROM_SCALE_OPERATION = "Invalid response from scale operation";
-
-
- private DriverExceptionID() {
-
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/HttpCode.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/HttpCode.java
deleted file mode 100644
index e08c1573cc..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/HttpCode.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.constant;
-
-/**
- * Constant Class.<br/>
- * <p>
- * Define constant for http operation.
- * </p>
- *
- * @author
- * @version ONAP Amsterdam 2016/8/4
- */
-public class HttpCode {
-
- /**
- * Fail to request.
- */
- public static final int BAD_REQUEST = 400;
-
- /**
- * Inner error
- */
- public static final int INTERNAL_SERVER_ERROR = 500;
-
- /**
- * Not accept request.
- */
- public static final int NOT_ACCEPTABLE = 406;
-
- /**
- * Not found service.
- */
- public static final int NOT_FOUND = 404;
-
- /**
- * Accept request.
- */
- public static final int RESPOND_ACCEPTED = 202;
-
- /**
- * Http response is ok.
- */
- public static final int RESPOND_OK = 200;
-
- public static final int CREATED_OK = 201;
-
- /**
- * Conflict
- */
- public static final int RESPOND_CONFLICT = 409;
-
- /**
- * Constructor<br/>
- * <p>
- * </p>
- *
- * @since ONAP Amsterdam Release 2017-9-6
- */
- private HttpCode() {
-
- }
-
- /**
- * Whether request is successful.<br/>
- *
- * @param httpCode response code
- * @return true or false
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static boolean isSucess(int httpCode) {
- return httpCode / 100 == 2;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/exceptions/ApplicationException.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/exceptions/ApplicationException.java
deleted file mode 100644
index 88260a7100..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/exceptions/ApplicationException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.exceptions;
-
-import javax.ws.rs.core.Response;
-
-public class ApplicationException extends Exception {
-
- /**
- * Serial number.
- */
- private static final long serialVersionUID = 1L;
-
- private int errorCode;
-
- private String errorMsg;
-
- /**
- * Constructor<br/>
- * <p>
- * </p>
- *
- * @param errorCode error status
- * @param errorMsg error detail
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public ApplicationException(int errorCode, String errorMsg) {
- this.errorCode = errorCode;
- this.errorMsg = errorMsg;
- }
-
- public int getErrorCode() {
- return errorCode;
- }
-
- public void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public String getErrorMsg() {
- return errorMsg;
- }
-
- public void setErrorMsg(String errorMsg) {
- this.errorMsg = errorMsg;
- }
-
- /**
- * build error Response <br>
- *
- * @return
- * @since ONAP Amsterdam Release
- */
- public Response buildErrorResponse() {
- return Response.status(errorCode).entity(errorMsg).build();
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java
deleted file mode 100644
index d312501fd7..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class AddPnfData {
- private String pnfId;
- private String pnfName;
- private String pnfdId;
- private String pnfProfileId;
- private List<PnfExtCpData> cpData;
-
- /***
- *
- * @return id of pnf
- */
- public String getPnfId() {
- return pnfId;
- }
-
- public void setPnfId(String pnfId) {
- this.pnfId = pnfId;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public String getPnfdId() {
- return pnfdId;
- }
-
- public void setPnfdId(String pnfdId) {
- this.pnfdId = pnfdId;
- }
-
- public String getPnfProfileId() {
- return pnfProfileId;
- }
-
- public void setPnfProfileId(String pnfProfileId) {
- this.pnfProfileId = pnfProfileId;
- }
-
- public List<PnfExtCpData> getCpData() {
- return cpData;
- }
-
- public void setCpData(List<PnfExtCpData> cpData) {
- this.cpData = cpData;
- }
-}
-
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java
deleted file mode 100644
index 9f357a549d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AddressRange {
- private String minAddress;
- private String maxAddress;
-
- public String getMinAddress() {
- return minAddress;
- }
-
- public void setMinAddress(String minAddress) {
- this.minAddress = minAddress;
- }
-
- public String getMaxAddress() {
- return maxAddress;
- }
-
- public void setMaxAddress(String maxAddress) {
- this.maxAddress = maxAddress;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java
deleted file mode 100644
index fa502f3962..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedNs {
- private String nsInstanceId;
- private String nsdId;
-
- private enum changeType {
- ADD, REMOVE, INSTANTIATE, TERMINATE, SCALE, UPDATE, HEAL
- }
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED, PARTIALLY_COMPLETED
- }
-
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
- public String getNsdId() {
- return nsdId;
- }
-
- public void setNsdId(String nsdId) {
- this.nsdId = nsdId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java
deleted file mode 100644
index 9d98e1c256..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedPnf {
- private String pnfid;
- private String pnfdid;
- private String pnfProfileId;
- private String pnfName;
- private String cpInstanceId;
-
- private enum changeType {
- ADD, REMOVE, MODIFY
- }
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED
- }
-
- public String getPnfid() {
- return pnfid;
- }
-
- public void setPnfid(String pnfid) {
- this.pnfid = pnfid;
- }
-
- public String getPnfdid() {
- return pnfdid;
- }
-
- public void setPnfdid(String pnfdid) {
- this.pnfdid = pnfdid;
- }
-
- public String getPnfProfileId() {
- return pnfProfileId;
- }
-
- public void setPnfProfileId(String pnfProfileId) {
- this.pnfProfileId = pnfProfileId;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public String getCpInstanceId() {
- return cpInstanceId;
- }
-
- public void setCpInstanceId(String cpInstanceId) {
- this.cpInstanceId = cpInstanceId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java
deleted file mode 100644
index 62f4f92fa9..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedSap {
- private String sapInstanceId;
- private String sapdId;
- private String sapName;
-
- private enum changeType {
- ADD, REMOVE, MODIFY
- }
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED
- }
-
- public String getSapInstanceId() {
- return sapInstanceId;
- }
-
- public void setSapInstanceId(String sapInstanceId) {
- this.sapInstanceId = sapInstanceId;
- }
-
- public String getSapdId() {
- return sapdId;
- }
-
- public void setSapdId(String sapdId) {
- this.sapdId = sapdId;
- }
-
- public String getSapName() {
- return sapName;
- }
-
- public void setSapName(String sapName) {
- this.sapName = sapName;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java
deleted file mode 100644
index ecaa1c5d3b..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedVirtualLink {
- private String nsVirtualLinkInstanceId;
- private String nsVirtualLinkDescId;
- private String vlProfileId;
-
- private enum changeType {
- ADD, DELETE, MODIFY, ADD_LINK_PORT, REMOVE_LINK_PORT
- };
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED
- }
-
- public String getNsVirtualLinkInstanceId() {
- return nsVirtualLinkInstanceId;
- }
-
- public void setNsVirtualLinkInstanceId(String nsVirtualLinkInstanceId) {
- this.nsVirtualLinkInstanceId = nsVirtualLinkInstanceId;
- }
-
- public String getNsVirtualLinkDescId() {
- return nsVirtualLinkDescId;
- }
-
- public void setNsVirtualLinkDescId(String nsVirtualLinkDescId) {
- this.nsVirtualLinkDescId = nsVirtualLinkDescId;
- }
-
- public String getVlProfileId() {
- return vlProfileId;
- }
-
- public void setVlProfileId(String vlProfileId) {
- this.vlProfileId = vlProfileId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java
deleted file mode 100644
index 6463c7a129..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedVnf {
- private String vnfInstanceId;
- private String vnfdId;
- private String vnfProfileId;
- private String vnfName;
-
- private enum changeType {
- ADD,
- REMOVE,
- INSTANTIATE,
- TERMINATE,
- SCALE,
- CHANGE_FLAVOUR,
- HEAL,
- OPERATE,
- MODIFY_INFORMATION,
- CHANGE_EXTERNAL_VNF_CONNECTIVITY
- };
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED
- }
-
- private ChangedInfo changedInfo;
-
-
- public String getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(String vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-
- public String getVnfdId() {
- return vnfdId;
- }
-
- public void setVnfdId(String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public String getVnfProfileId() {
- return vnfProfileId;
- }
-
- public void setVnfProfileId(String vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-
- public String getVnfName() {
- return vnfName;
- }
-
- public void setVnfName(String vnfName) {
- this.vnfName = vnfName;
- }
-
- public ChangedInfo getChangedInfo() {
- return changedInfo;
- }
-
- public void setChangedInfo(ChangedInfo changedInfo) {
- this.changedInfo = changedInfo;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java
deleted file mode 100644
index 04e9481190..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class AffectedVnffg {
- private String vnffgInstanceId;
- private String vnffgdId;
-
- private enum changeType {
- ADD, REMOVE, MODIFY
- }
- private enum changeResult {
- COMPLETED, ROLLED_BACK, FAILED
- }
-
- public String getVnffgInstanceId() {
- return vnffgInstanceId;
- }
-
- public void setVnffgInstanceId(String vnffgInstanceId) {
- this.vnffgInstanceId = vnffgInstanceId;
- }
-
- public String getVnffgdId() {
- return vnffgdId;
- }
-
- public void setVnffgdId(String vnffgdId) {
- this.vnffgdId = vnffgdId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java
deleted file mode 100644
index 7f019bcf40..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class AffinityOrAntiAffinityRule {
- private String vnfdId;
- private List<String> vnfProfileId;
- private List<String> vnfInstanceId;
-
- private enum affinityOrAntiAffiinty {
- AFFINITY, ANTI_AFFIINTY
- };
- private enum scope {
- NFVI_POP, ZONE, ZONE_GROUP, NFVI_NODE
- };
-
- public String getVnfdId() {
- return vnfdId;
- }
-
- public void setVnfdId(String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public List<String> getVnfProfileId() {
- return vnfProfileId;
- }
-
- public void setVnfProfileId(List<String> vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-
- public List<String> getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(List<String> vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java
deleted file mode 100644
index 5de6cbf139..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class ChangedInfo {
- private ModifyVnfInfoData changedVnfInfo;
- private ExtVirtualLinkInfo changedExtConnectivity;
-
- public ModifyVnfInfoData getChangedVnfInfo() {
- return changedVnfInfo;
- }
-
- public void setChangedVnfInfo(ModifyVnfInfoData changedVnfInfo) {
- this.changedVnfInfo = changedVnfInfo;
- }
-
- public ExtVirtualLinkInfo getChangedExtConnectivity() {
- return changedExtConnectivity;
- }
-
- public void setChangedExtConnectivity(ExtVirtualLinkInfo changedExtConnectivity) {
- this.changedExtConnectivity = changedExtConnectivity;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java
deleted file mode 100644
index 2a63d39be0..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class CivicAddressElement {
- private int caType;
- private String caValue;
-
- public int getCaType() {
- return caType;
- }
-
- public void setCaType(int caType) {
- this.caType = caType;
- }
-
- public String getCaValue() {
- return caValue;
- }
-
- public void setCaValue(String caValue) {
- this.caValue = caValue;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java
deleted file mode 100644
index 27272ea22a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class CpProtocolData {
- private String layerProtocol;
- private IpOverEthernetAddressData ipOverEthernet;
-
- public String getLayerProtocol() {
- return layerProtocol;
- }
-
- public void setLayerProtocol(String layerProtocol) {
- this.layerProtocol = layerProtocol;
- }
-
- public IpOverEthernetAddressData getIpOverEthernet() {
- return ipOverEthernet;
- }
-
- public void setIpOverEthernet(IpOverEthernetAddressData ipOverEthernet) {
- this.ipOverEthernet = ipOverEthernet;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java
deleted file mode 100644
index 5f1191efe9..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class CpProtocolInfo {
- @NotNull
- private enum layerProtocol {
- IP_OVER_ETHERNET
- };
-
- private IpOverEthernetAddressData ipOverEthernet;
-
- public IpOverEthernetAddressData getIpOverEthernet() {
- return ipOverEthernet;
- }
-
- public void setIpOverEthernet(IpOverEthernetAddressData ipOverEthernet) {
- this.ipOverEthernet = ipOverEthernet;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java
deleted file mode 100644
index 878ce60ba1..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class CreateNsRequest {
-
- String nsdId;
-
- String nsName;
-
- String nsDescription;
-
-
- public String getNsdId() {
- return nsdId;
- }
-
- public void setNsdId(String nsdId) {
- this.nsdId = nsdId;
- }
-
- public String getNsDescription() {
- return nsDescription;
- }
-
- public void setNsDescription(String nsDescription) {
- this.nsDescription = nsDescription;
- }
-
- /**
- * @return Returns the nsName.
- */
- public String getNsName() {
- return nsName;
- }
-
- /**
- * @param nsName The nsName to set.
- */
- public void setNsName(String nsName) {
- this.nsName = nsName;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CustomerModel.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CustomerModel.java
deleted file mode 100644
index e54f0dfb6d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CustomerModel.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * The Customer Model <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-10-12
- */
-public class CustomerModel {
-
- String globalCustomerId;
-
- String serviceType;
-
-
- /**
- * @return Returns the globalCustomerId.
- */
- public String getGlobalCustomerId() {
- return globalCustomerId;
- }
-
-
- /**
- * @param globalCustomerId The globalCustomerId to set.
- */
- public void setGlobalCustomerId(String globalCustomerId) {
- this.globalCustomerId = globalCustomerId;
- }
-
-
- /**
- * @return Returns the serviceType.
- */
- public String getServiceType() {
- return serviceType;
- }
-
-
- /**
- * @param serviceType The serviceType to set.
- */
- public void setServiceType(String serviceType) {
- this.serviceType = serviceType;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java
deleted file mode 100644
index 63ca66bd43..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class ExtCpInfo {
- @NotNull
- private String id;
- @NotNull
- private String cpdId;
- private List<CpProtocolData> cpProtocolInfo;
- private List<String> extLinkPortId;
-
-
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java
deleted file mode 100644
index a1ab3fdb97..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class ExtLinkPortInfo {
- private String id;
- private ResourceHandle resourceHandle;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public ResourceHandle getResourceHandle() {
- return resourceHandle;
- }
-
- public void setResourceHandle(ResourceHandle resourceHandle) {
- this.resourceHandle = resourceHandle;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java
deleted file mode 100644
index 3f643a8330..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class ExtManagedVirtualLinkInfo {
- @NotNull
- private String id;
- @NotNull
- private String vnfVirtualLinkDescId;
- @NotNull
- private ResourceHandle networkResource;
- private List<VnfLinkPortInfo> vnfLinkPorts;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVnfVirtualLinkDescId() {
- return vnfVirtualLinkDescId;
- }
-
- public void setVnfVirtualLinkDescId(String vnfVirtualLinkDescId) {
- this.vnfVirtualLinkDescId = vnfVirtualLinkDescId;
- }
-
- public ResourceHandle getNetworkResource() {
- return networkResource;
- }
-
- public void setNetworkResource(ResourceHandle networkResource) {
- this.networkResource = networkResource;
- }
-
- public List<VnfLinkPortInfo> getVnfLinkPorts() {
- return vnfLinkPorts;
- }
-
- public void setVnfLinkPorts(List<VnfLinkPortInfo> vnfLinkPorts) {
- this.vnfLinkPorts = vnfLinkPorts;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java
deleted file mode 100644
index ce7d1cfe6d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class ExtVirtualLinkInfo {
- private String id;
- private ResourceHandle resourceHandle;
- private ExtLinkPortInfo extLinkPorts;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public ResourceHandle getResourceHandle() {
- return resourceHandle;
- }
-
- public void setResourceHandle(ResourceHandle resourceHandle) {
- this.resourceHandle = resourceHandle;
- }
-
- public ExtLinkPortInfo getExtLinkPorts() {
- return extLinkPorts;
- }
-
- public void setExtLinkPorts(ExtLinkPortInfo extLinkPorts) {
- this.extLinkPorts = extLinkPorts;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java
deleted file mode 100644
index ff0730a527..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-import java.util.Map;
-
-public class InstantiateNsRequest {
-
- private String nsFlavourId;
- private List<SapData> sapData;
- private List<AddPnfData> addpnfData;
- private List<VnfInstanceData> vnfInstanceData;
- private List<String> nestedNsInstanceId;
- private List<VnfLocationConstraint> localizationLanguage;
- private Map<String, Object> aditionalParamsForNs;
- private List<ParamsForVnf> additionalParamsForVnf;
- private String startTime;
- private String nsInstantiationLevelId;
- private List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffiniityRule;
-
- /***
- *
- * @return nsFlavourId
- */
- public String getNsFlavourId() {
- return nsFlavourId;
- }
-
- /***
- *
- * @param nsFlavourId
- */
- public void setNsFlavourId(String nsFlavourId) {
- this.nsFlavourId = nsFlavourId;
- }
-
- /***
- *
- * @return
- */
- public List<SapData> getSapData() {
- return sapData;
- }
-
- /***
- *
- * @param sapData
- */
- public void setSapData(List<SapData> sapData) {
- this.sapData = sapData;
- }
-
- /***
- *
- * @return
- */
- public List<AddPnfData> getAddpnfData() {
- return addpnfData;
- }
-
- /***
- *
- * @param addpnfData
- */
- public void setAddpnfData(List<AddPnfData> addpnfData) {
- this.addpnfData = addpnfData;
- }
-
- /***
- *
- * @return
- */
- public List<VnfInstanceData> getVnfInstanceData() {
- return vnfInstanceData;
- }
-
- /***
- *
- * @param vnfInstanceData
- */
- public void setVnfInstanceData(List<VnfInstanceData> vnfInstanceData) {
- this.vnfInstanceData = vnfInstanceData;
- }
-
- /***
- *
- * @return
- */
- public List<String> getNestedNsInstanceId() {
- return nestedNsInstanceId;
- }
-
- /***
- *
- * @param nestedNsInstanceId
- */
- public void setNestedNsInstanceId(List<String> nestedNsInstanceId) {
- this.nestedNsInstanceId = nestedNsInstanceId;
- }
-
- /***
- *
- * @return
- */
- public List<VnfLocationConstraint> getLocalizationLanguage() {
- return localizationLanguage;
- }
-
- /***
- *
- * @param localizationLanguage
- */
- public void setLocalizationLanguage(List<VnfLocationConstraint> localizationLanguage) {
- this.localizationLanguage = localizationLanguage;
- }
-
- /***
- *
- * @return
- */
- public Map<String, Object> getAditionalParamsForNs() {
- return aditionalParamsForNs;
- }
-
- /***
- *
- * @param aditionalParamsForNs
- */
- public void setAditionalParamsForNs(Map<String, Object> aditionalParamsForNs) {
- this.aditionalParamsForNs = aditionalParamsForNs;
- }
-
- /***
- *
- * @return
- */
- public List<ParamsForVnf> getAdditionalParamsForVnf() {
- return additionalParamsForVnf;
- }
-
- /***
- *
- * @param additionalParamsForVnf
- */
- public void setAdditionalParamsForVnf(List<ParamsForVnf> additionalParamsForVnf) {
- this.additionalParamsForVnf = additionalParamsForVnf;
- }
-
- /***
- *
- * @return
- */
- public String getStartTime() {
- return startTime;
- }
-
- /***
- *
- * @param startTime
- */
- public void setStartTime(String startTime) {
- this.startTime = startTime;
- }
-
- /***
- *
- * @return
- */
- public String getNsInstantiationLevelId() {
- return nsInstantiationLevelId;
- }
-
- /***
- *
- * @param nsInstantiationLevelId
- */
- public void setNsInstantiationLevelId(String nsInstantiationLevelId) {
- this.nsInstantiationLevelId = nsInstantiationLevelId;
- }
-
- /***
- *
- * @return
- */
- public List<AffinityOrAntiAffinityRule> getAdditionalAffinityOrAntiAffiniityRule() {
- return additionalAffinityOrAntiAffiniityRule;
- }
-
- /***
- *
- * @param additionalAffinityOrAntiAffiniityRule
- */
- public void setAdditionalAffinityOrAntiAffiniityRule(
- List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffiniityRule) {
- this.additionalAffinityOrAntiAffiniityRule = additionalAffinityOrAntiAffiniityRule;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java
deleted file mode 100644
index e66bb90bbd..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class InstantiatedVnfInfo {
- @NotNull
- private String flavourId;
- @NotNull
- private String vnfState;
- private List<VnfScaleInfo> vnfScaleInfos;
- @NotNull
- private List<ExtCpInfo> extCpInfo;
- private List<ExtVirtualLinkInfo> extVirtualLinkInfo;
- private List<ExtManagedVirtualLinkInfo> extManagedVirtualLinkInfo;
- // Defination of MonitoringParameter is not there in ETSI document
- // considering as String
- private List<String> monitoringParameters;
- private String localizationLanguage;
-
- private List<VnfcResourceInfo> vnfcResourceInfo;
- // Defination of VirtualStorageResourceInfo is not there in ETSI document
- // considering as String
- private List<String> virtualStorageResourceInfo;
-
- public String getFlavourId() {
- return flavourId;
- }
-
- public void setFlavourId(String flavourId) {
- this.flavourId = flavourId;
- }
-
- public String getVnfState() {
- return vnfState;
- }
-
- public void setVnfState(String vnfState) {
- this.vnfState = vnfState;
- }
-
- public List<VnfScaleInfo> getVnfScaleInfos() {
- return vnfScaleInfos;
- }
-
- public void setVnfScaleInfos(List<VnfScaleInfo> vnfScaleInfos) {
- this.vnfScaleInfos = vnfScaleInfos;
- }
-
- public List<ExtCpInfo> getExtCpInfo() {
- return extCpInfo;
- }
-
- public void setExtCpInfo(List<ExtCpInfo> extCpInfo) {
- this.extCpInfo = extCpInfo;
- }
-
- public List<ExtVirtualLinkInfo> getExtVirtualLinkInfo() {
- return extVirtualLinkInfo;
- }
-
- public void setExtVirtualLinkInfo(List<ExtVirtualLinkInfo> extVirtualLinkInfo) {
- this.extVirtualLinkInfo = extVirtualLinkInfo;
- }
-
- public List<ExtManagedVirtualLinkInfo> getExtManagedVirtualLinkInfo() {
- return extManagedVirtualLinkInfo;
- }
-
- public void setExtManagedVirtualLinkInfo(List<ExtManagedVirtualLinkInfo> extManagedVirtualLinkInfo) {
- this.extManagedVirtualLinkInfo = extManagedVirtualLinkInfo;
- }
-
- public List<String> getMonitoringParameters() {
- return monitoringParameters;
- }
-
- public void setMonitoringParameters(List<String> monitoringParameters) {
- this.monitoringParameters = monitoringParameters;
- }
-
- public String getLocalizationLanguage() {
- return localizationLanguage;
- }
-
- public void setLocalizationLanguage(String localizationLanguage) {
- this.localizationLanguage = localizationLanguage;
- }
-
- public List<VnfcResourceInfo> getVnfcResourceInfo() {
- return vnfcResourceInfo;
- }
-
- public void setVnfcResourceInfo(List<VnfcResourceInfo> vnfcResourceInfo) {
- this.vnfcResourceInfo = vnfcResourceInfo;
- }
-
- public List<String> getVirtualStorageResourceInfo() {
- return virtualStorageResourceInfo;
- }
-
- public void setVirtualStorageResourceInfo(List<String> virtualStorageResourceInfo) {
- this.virtualStorageResourceInfo = virtualStorageResourceInfo;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java
deleted file mode 100644
index 32c5571d96..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class IpAddresses {
- private String type;
- private List<String> fixedAddresses;
- private int numDynamicAddresses;
- private AddressRange addressRange;
- private String subnetId;
-
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public List<String> getFixedAddresses() {
- return fixedAddresses;
- }
-
- public void setFixedAddresses(List<String> fixedAddresses) {
- this.fixedAddresses = fixedAddresses;
- }
-
- public int getNumDynamicAddresses() {
- return numDynamicAddresses;
- }
-
- public void setNumDynamicAddresses(int numDynamicAddresses) {
- this.numDynamicAddresses = numDynamicAddresses;
- }
-
- public AddressRange getAddressRange() {
- return addressRange;
- }
-
- public void setAddressRange(AddressRange addressRange) {
- this.addressRange = addressRange;
- }
-
- public String getSubnetId() {
- return subnetId;
- }
-
- public void setSubnetId(String subnetId) {
- this.subnetId = subnetId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java
deleted file mode 100644
index 48529e5f76..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class IpOverEthernetAddressData {
- private String macAddress;
- private List<IpAddresses> ipAddresses;
-
- public String getMacAddress() {
- return macAddress;
- }
-
- public void setMacAddress(String macAddress) {
- this.macAddress = macAddress;
- }
-
- public List<IpAddresses> getIpAddresses() {
- return ipAddresses;
- }
-
- public void setIpAddresses(List<IpAddresses> ipAddresses) {
- this.ipAddresses = ipAddresses;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java
deleted file mode 100644
index 2459346826..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class Link {
- private String href;
-
- public String getHref() {
- return href;
- }
-
- public void setHref(String href) {
- this.href = href;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java
deleted file mode 100644
index 8ad8f000c1..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class Links {
- private Link self;
- private Link nsInstance;
- private Link cancel;
- private Link retry;
- private Link rollback;
- private Link continues;
- private Link fail;
-
- public Link getSelf() {
- return self;
- }
-
- public void setSelf(Link self) {
- this.self = self;
- }
-
- public Link getNsInstance() {
- return nsInstance;
- }
-
- public void setNsInstance(Link nsInstance) {
- this.nsInstance = nsInstance;
- }
-
- public Link getCancel() {
- return cancel;
- }
-
- public void setCancel(Link cancel) {
- this.cancel = cancel;
- }
-
- public Link getRetry() {
- return retry;
- }
-
- public void setRetry(Link retry) {
- this.retry = retry;
- }
-
- public Link getRollback() {
- return rollback;
- }
-
- public void setRollback(Link rollback) {
- this.rollback = rollback;
- }
-
- public Link getContinues() {
- return continues;
- }
-
- public void setContinues(Link continues) {
- this.continues = continues;
- }
-
- public Link getFail() {
- return fail;
- }
-
- public void setFail(Link fail) {
- this.fail = fail;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraint.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraint.java
deleted file mode 100644
index b79565d7a9..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraint.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class LocationConstraint {
-
- /**
- * vnf profile id
- */
- private String vnfProfileId;
-
- /**
- * location constraints: vimId
- */
- private VimLocation locationConstraints;
-
- /**
- * @return Returns the vnfProfileId.
- */
- public String getVnfProfileId() {
- return vnfProfileId;
- }
-
- /**
- * @param vnfProfileId The vnfProfileId to set.
- */
- public void setVnfProfileId(String vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-
-
- /**
- * @return Returns the locationConstraints.
- */
- public VimLocation getLocationConstraints() {
- return locationConstraints;
- }
-
-
- /**
- * @param locationConstraints The locationConstraints to set.
- */
- public void setLocationConstraints(VimLocation locationConstraints) {
- this.locationConstraints = locationConstraints;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java
deleted file mode 100644
index b636d49edf..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class LocationConstraints {
- private String countryCode;
- private CivicAddressElement civicAddressElement;
-
- public String getCountryCode() {
- return countryCode;
- }
-
- public void setCountryCode(String countryCode) {
- this.countryCode = countryCode;
- }
-
- public CivicAddressElement getCivicAddressElement() {
- return civicAddressElement;
- }
-
- public void setCivicAddressElement(CivicAddressElement civicAddressElement) {
- this.civicAddressElement = civicAddressElement;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java
deleted file mode 100644
index 352f47e19f..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class Mask {
- @NotNull
- private int startingPoint;
- @NotNull
- private int length;
- @NotNull
- private String value;
-
- public int getStartingPoint() {
- return startingPoint;
- }
-
- public void setStartingPoint(int startingPoint) {
- this.startingPoint = startingPoint;
- }
-
- public int getLength() {
- return length;
- }
-
- public void setLength(int length) {
- this.length = length;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java
deleted file mode 100644
index 55ab21e8e2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.Map;
-
-public class ModifyVnfInfoData {
- private String vnfInstanceId;
- private String vnfInstanceName;
- private String vnfInstanceDescription;
- private String vnfPkgId;
- private Map<String, Object> vnfConfigurableProperties;
- private Map<String, Object> Metadata;
- private Map<String, Object> Extensions;
-
- public String getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(String vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-
- public String getVnfInstanceName() {
- return vnfInstanceName;
- }
-
- public void setVnfInstanceName(String vnfInstanceName) {
- this.vnfInstanceName = vnfInstanceName;
- }
-
- public String getVnfInstanceDescription() {
- return vnfInstanceDescription;
- }
-
- public void setVnfInstanceDescription(String vnfInstanceDescription) {
- this.vnfInstanceDescription = vnfInstanceDescription;
- }
-
- public String getVnfPkgId() {
- return vnfPkgId;
- }
-
- public void setVnfPkgId(String vnfPkgId) {
- this.vnfPkgId = vnfPkgId;
- }
-
- public Map<String, Object> getVnfConfigurableProperties() {
- return vnfConfigurableProperties;
- }
-
- public void setVnfConfigurableProperties(Map<String, Object> vnfConfigurableProperties) {
- this.vnfConfigurableProperties = vnfConfigurableProperties;
- }
-
- public Map<String, Object> getMetadata() {
- return Metadata;
- }
-
- public void setMetadata(Map<String, Object> metadata) {
- Metadata = metadata;
- }
-
- public Map<String, Object> getExtensions() {
- return Extensions;
- }
-
- public void setExtensions(Map<String, Object> extensions) {
- Extensions = extensions;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NSResourceInputParameter.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NSResourceInputParameter.java
deleted file mode 100644
index 266e5ee5d8..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NSResourceInputParameter.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * Copyright (C) 2018 CMCC All rights reserved.
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.io.ByteArrayOutputStream;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Marshaller;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * NS Create Input Parameter For VFC Adapter<br>
- * <p>
- * </p>
- *
- * @version ONAP Amsterdam Release 2017/1/7
- */
-public class NSResourceInputParameter {
-
- private static final Logger logger = LoggerFactory.getLogger(NSResourceInputParameter.class);
-
- private NsOperationKey nsOperationKey;
-
- private String nsServiceName;
-
- private String nsServiceDescription;
-
- private String nsServiceModelUUID;
-
- private NsParameters nsParameters;
-
- private NsScaleParameters nsScaleParameters;
-
-
- /**
- * @return Returns the nsServiceName.
- */
- public String getNsServiceName() {
- return nsServiceName;
- }
-
-
- /**
- * @param nsServiceName The nsServiceName to set.
- */
- public void setNsServiceName(String nsServiceName) {
- this.nsServiceName = nsServiceName;
- }
-
-
- /**
- * @return Returns the nsServiceDescription.
- */
- public String getNsServiceDescription() {
- return nsServiceDescription;
- }
-
-
- /**
- * @param nsServiceDescription The nsServiceDescription to set.
- */
- public void setNsServiceDescription(String nsServiceDescription) {
- this.nsServiceDescription = nsServiceDescription;
- }
-
- /**
- * @return Returns the nsParameters.
- */
- public NsParameters getNsParameters() {
- return nsParameters;
- }
-
- /**
- * @param nsParameters The nsParameters to set.
- */
- public void setNsParameters(NsParameters nsParameters) {
- this.nsParameters = nsParameters;
- }
-
- public NsOperationKey getNsOperationKey() {
- return nsOperationKey;
- }
-
- public void setNsOperationKey(NsOperationKey nsOperationKey) {
- this.nsOperationKey = nsOperationKey;
- }
-
- public String toJsonString() {
- String jsonString = null;
- try {
- ObjectMapper mapper = new ObjectMapper();
- mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
- jsonString = mapper.writeValueAsString(this);
- } catch (Exception e) {
- logger.debug("Exception:", e);
- }
- return jsonString;
- }
-
- public String toXmlString() {
- try {
- ByteArrayOutputStream bs = new ByteArrayOutputStream();
- JAXBContext context = JAXBContext.newInstance(this.getClass());
- Marshaller marshaller = context.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // pretty print XML
- marshaller.marshal(this, bs);
- return bs.toString();
- } catch (Exception e) {
- logger.debug("Exception:", e);
- return "";
- }
- }
-
- public NsScaleParameters getNsScaleParameters() {
- return nsScaleParameters;
- }
-
- public void setNsScaleParameters(NsScaleParameters nsScaleParameters) {
- this.nsScaleParameters = nsScaleParameters;
- }
-
-
- public String getNsServiceModelUUID() {
- return nsServiceModelUUID;
- }
-
-
- public void setNsServiceModelUUID(String nsServiceModelUUID) {
- this.nsServiceModelUUID = nsServiceModelUUID;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java
deleted file mode 100644
index a6e3963725..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class NfpInfo {
- @NotNull
- private String id;
- private String nfpdId;
- private String nfpName;
- private String description;
- @NotNull
- private List<NsCpHandle> nscpHandle;
- private int totalCp;
- @NotNull
- private NfpRule nfpRule;
-
- @NotNull
- private enum nfpState {
- ENABLED, DISABLED
- };
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getNfpdId() {
- return nfpdId;
- }
-
- public void setNfpdId(String nfpdId) {
- this.nfpdId = nfpdId;
- }
-
- public String getNfpName() {
- return nfpName;
- }
-
- public void setNfpName(String nfpName) {
- this.nfpName = nfpName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public List<NsCpHandle> getNscpHandle() {
- return nscpHandle;
- }
-
- public void setNscpHandle(List<NsCpHandle> nscpHandle) {
- this.nscpHandle = nscpHandle;
- }
-
- public int getTotalCp() {
- return totalCp;
- }
-
- public void setTotalCp(int totalCp) {
- this.totalCp = totalCp;
- }
-
- public NfpRule getNfpRule() {
- return nfpRule;
- }
-
- public void setNfpRule(NfpRule nfpRule) {
- this.nfpRule = nfpRule;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java
deleted file mode 100644
index b4f684a3e2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class NfpRule {
- private String etherDestinationAddress;
- private String etherSourceAddress;
-
- private enum etherType {
- IPV4, IPV6
- };
-
- private List<String> vlanTag;
-
- private enum protocol {
- TCP, UDP, ICMP
- }
-
- private String dscp;
- private PortRange sourcePortRange;
- private PortRange destinationPortRange;
- private String sourceIpAddressPrefix;
- private String destinationIpAddressPrefix;
- private List<Mask> extendedCriteria;
-
- public String getEtherDestinationAddress() {
- return etherDestinationAddress;
- }
-
- public void setEtherDestinationAddress(String etherDestinationAddress) {
- this.etherDestinationAddress = etherDestinationAddress;
- }
-
- public String getEtherSourceAddress() {
- return etherSourceAddress;
- }
-
- public void setEtherSourceAddress(String etherSourceAddress) {
- this.etherSourceAddress = etherSourceAddress;
- }
-
- public List<String> getVlanTag() {
- return vlanTag;
- }
-
- public void setVlanTag(List<String> vlanTag) {
- this.vlanTag = vlanTag;
- }
-
- public String getDscp() {
- return dscp;
- }
-
- public void setDscp(String dscp) {
- this.dscp = dscp;
- }
-
- public PortRange getSourcePortRange() {
- return sourcePortRange;
- }
-
- public void setSourcePortRange(PortRange sourcePortRange) {
- this.sourcePortRange = sourcePortRange;
- }
-
- public PortRange getDestinationPortRange() {
- return destinationPortRange;
- }
-
- public void setDestinationPortRange(PortRange destinationPortRange) {
- this.destinationPortRange = destinationPortRange;
- }
-
- public String getSourceIpAddressPrefix() {
- return sourceIpAddressPrefix;
- }
-
- public void setSourceIpAddressPrefix(String sourceIpAddressPrefix) {
- this.sourceIpAddressPrefix = sourceIpAddressPrefix;
- }
-
- public String getDestinationIpAddressPrefix() {
- return destinationIpAddressPrefix;
- }
-
- public void setDestinationIpAddressPrefix(String destinationIpAddressPrefix) {
- this.destinationIpAddressPrefix = destinationIpAddressPrefix;
- }
-
- public List<Mask> getExtendedCriteria() {
- return extendedCriteria;
- }
-
- public void setExtendedCriteria(List<Mask> extendedCriteria) {
- this.extendedCriteria = extendedCriteria;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java
deleted file mode 100644
index 326488fb76..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class NsCpHandle {
- private String vnfInstanceId;
- private String vnfExtCpInstanceId;
- private String pnfInfoId;
- private String pnfExtCpInstanceId;
- private String nsInstanceId;
- private String nsSapInstanceId;
-
- public String getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(String vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-
- public String getVnfExtCpInstanceId() {
- return vnfExtCpInstanceId;
- }
-
- public void setVnfExtCpInstanceId(String vnfExtCpInstanceId) {
- this.vnfExtCpInstanceId = vnfExtCpInstanceId;
- }
-
- public String getPnfInfoId() {
- return pnfInfoId;
- }
-
- public void setPnfInfoId(String pnfInfoId) {
- this.pnfInfoId = pnfInfoId;
- }
-
- public String getPnfExtCpInstanceId() {
- return pnfExtCpInstanceId;
- }
-
- public void setPnfExtCpInstanceId(String pnfExtCpInstanceId) {
- this.pnfExtCpInstanceId = pnfExtCpInstanceId;
- }
-
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
- public String getNsSapInstanceId() {
- return nsSapInstanceId;
- }
-
- public void setNsSapInstanceId(String nsSapInstanceId) {
- this.nsSapInstanceId = nsSapInstanceId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCreateReq.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCreateReq.java
deleted file mode 100644
index 63358cb384..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCreateReq.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * Network Service Request<br/>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Sep 2, 2016
- */
-public class NsCreateReq {
-
- CustomerModel context;
-
- String csarId;
-
- String nsName;
-
- String description;
-
-
- /**
- * @return Returns the context.
- */
- public CustomerModel getContext() {
- return context;
- }
-
-
-
- /**
- * @param context The context to set.
- */
- public void setContext(CustomerModel context) {
- this.context = context;
- }
-
-
- /**
- * @return Returns the csarId.
- */
- public String getCsarId() {
- return csarId;
- }
-
-
- /**
- * @param csarId The csarId to set.
- */
- public void setCsarId(String csarId) {
- this.csarId = csarId;
- }
-
- /**
- * @return Returns the nsName.
- */
- public String getNsName() {
- return nsName;
- }
-
- /**
- * @param nsName The nsName to set.
- */
- public void setNsName(String nsName) {
- this.nsName = nsName;
- }
-
- /**
- * @return Returns the description.
- */
- public String getDescription() {
- return description;
- }
-
- /**
- * @param description The description to set.
- */
- public void setDescription(String description) {
- this.description = description;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java
deleted file mode 100644
index d2d4b4e772..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class NsInstance {
- @NotNull
- private String id;
- @NotNull
- private String nsInstanceName;
- @NotNull
- private String nsInstanceDescription;
- @NotNull
- private String nsdId;
- @NotNull
- private String nsdInfoId;
- private String flavourId;
- private List<VnfInstance> vnfInstance;
- private List<PnfInfo> pnfInfo;
- private List<NsVirtualLinkInfo> virtualLinkInfo;
- private List<VnffgInfo> vnffgInfo;
- private List<SapInfo> sapInfo;
- private List<String> nestedNsInstanceId;
-
- @NotNull
- private enum nsState {
- NOT_INSTANTIATED, INSTANTIATED
- };
-
- private List<NsScaleInfo> nsScaleStatus;
- private List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffinityRule;
- @NotNull
- private NsInstanceLinks _links;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getNsInstanceName() {
- return nsInstanceName;
- }
-
- public void setNsInstanceName(String nsInstanceName) {
- this.nsInstanceName = nsInstanceName;
- }
-
- public String getNsInstanceDescription() {
- return nsInstanceDescription;
- }
-
- public void setNsInstanceDescription(String nsInstanceDescription) {
- this.nsInstanceDescription = nsInstanceDescription;
- }
-
- public String getNsdId() {
- return nsdId;
- }
-
- public void setNsdId(String nsdId) {
- this.nsdId = nsdId;
- }
-
- public String getNsdInfoId() {
- return nsdInfoId;
- }
-
- public void setNsdInfoId(String nsdInfoId) {
- this.nsdInfoId = nsdInfoId;
- }
-
- public String getFlavourId() {
- return flavourId;
- }
-
- public void setFlavourId(String flavourId) {
- this.flavourId = flavourId;
- }
-
- public List<VnfInstance> getVnfInstance() {
- return vnfInstance;
- }
-
- public void setVnfInstance(List<VnfInstance> vnfInstance) {
- this.vnfInstance = vnfInstance;
- }
-
- public List<PnfInfo> getPnfInfo() {
- return pnfInfo;
- }
-
- public void setPnfInfo(List<PnfInfo> pnfInfo) {
- this.pnfInfo = pnfInfo;
- }
-
- public List<NsVirtualLinkInfo> getVirtualLinkInfo() {
- return virtualLinkInfo;
- }
-
- public void setVirtualLinkInfo(List<NsVirtualLinkInfo> virtualLinkInfo) {
- this.virtualLinkInfo = virtualLinkInfo;
- }
-
- public List<VnffgInfo> getVnffgInfo() {
- return vnffgInfo;
- }
-
- public void setVnffgInfo(List<VnffgInfo> vnffgInfo) {
- this.vnffgInfo = vnffgInfo;
- }
-
- public List<SapInfo> getSapInfo() {
- return sapInfo;
- }
-
- public void setSapInfo(List<SapInfo> sapInfo) {
- this.sapInfo = sapInfo;
- }
-
- public List<String> getNestedNsInstanceId() {
- return nestedNsInstanceId;
- }
-
- public void setNestedNsInstanceId(List<String> nestedNsInstanceId) {
- this.nestedNsInstanceId = nestedNsInstanceId;
- }
-
- public List<NsScaleInfo> getNsScaleStatus() {
- return nsScaleStatus;
- }
-
- public void setNsScaleStatus(List<NsScaleInfo> nsScaleStatus) {
- this.nsScaleStatus = nsScaleStatus;
- }
-
- public List<AffinityOrAntiAffinityRule> getAdditionalAffinityOrAntiAffinityRule() {
- return additionalAffinityOrAntiAffinityRule;
- }
-
- public void setAdditionalAffinityOrAntiAffinityRule(
- List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffinityRule) {
- this.additionalAffinityOrAntiAffinityRule = additionalAffinityOrAntiAffinityRule;
- }
-
- public NsInstanceLinks get_links() {
- return _links;
- }
-
- public void set_links(NsInstanceLinks _links) {
- this._links = _links;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java
deleted file mode 100644
index 08b3c63c08..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class NsInstanceLinks {
- @NotNull
- private Link self;
- private List<Link> nestedNsInstances;
- private Link instantiate;
- private Link terminate;
- private Link update;
- private Link scale;
- private Link heal;
-
- public Link getSelf() {
- return self;
- }
-
- public void setSelf(Link self) {
- this.self = self;
- }
-
- public List<Link> getNestedNsInstances() {
- return nestedNsInstances;
- }
-
- public void setNestedNsInstances(List<Link> nestedNsInstances) {
- this.nestedNsInstances = nestedNsInstances;
- }
-
- public Link getInstantiate() {
- return instantiate;
- }
-
- public void setInstantiate(Link instantiate) {
- this.instantiate = instantiate;
- }
-
- public Link getTerminate() {
- return terminate;
- }
-
- public void setTerminate(Link terminate) {
- this.terminate = terminate;
- }
-
- public Link getUpdate() {
- return update;
- }
-
- public void setUpdate(Link update) {
- this.update = update;
- }
-
- public Link getScale() {
- return scale;
- }
-
- public void setScale(Link scale) {
- this.scale = scale;
- }
-
- public Link getHeal() {
- return heal;
- }
-
- public void setHeal(Link heal) {
- this.heal = heal;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstantiateReq.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstantiateReq.java
deleted file mode 100644
index 4281026021..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstantiateReq.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * <br>
- * <p>
- * </p>
- * request model for instatiate
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class NsInstantiateReq extends NsParameters {
-
- String nsInstanceId;
-
- /**
- * @return Returns the nsInstanceId.
- */
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- /**
- * @param nsInstanceId The nsInstanceId to set.
- */
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java
deleted file mode 100644
index 559b1f7ba7..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.onap.so.adapters.vfc.constant.CommonConstant;
-
-public class NsLcmOpOcc {
- private String id;
- private CommonConstant.operationState operationState;
- private String statusEnteredTime;
- private String nsInstanceId;
- private CommonConstant.lcmOperationType lcmOperationType;
- private String startTime;
- private Boolean isAutomaticInvocation;
- private String operationParams;
- private Boolean isCancelPending;
- private CommonConstant.cancelMode cancelMode;
- private ProblemDetails error;
- private Links links;
-
- public CommonConstant.lcmOperationType getLcmOperationType() {
- return lcmOperationType;
- }
-
- public void setLcmOperationType(CommonConstant.lcmOperationType lcmOperationType) {
- this.lcmOperationType = lcmOperationType;
- }
-
- public CommonConstant.cancelMode getCancelMode() {
- return cancelMode;
- }
-
- public void setCancelMode(CommonConstant.cancelMode cancelMode) {
- this.cancelMode = cancelMode;
- }
-
- public CommonConstant.operationState getOperationState() {
- return operationState;
- }
-
- public void setOperationState(CommonConstant.operationState operationState) {
- this.operationState = operationState;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getStatusEnteredTime() {
- return statusEnteredTime;
- }
-
- public void setStatusEnteredTime(String statusEnteredTime) {
- this.statusEnteredTime = statusEnteredTime;
- }
-
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
- public String getStartTime() {
- return startTime;
- }
-
- public void setStartTime(String startTime) {
- this.startTime = startTime;
- }
-
- public Boolean getAutomaticInvocation() {
- return isAutomaticInvocation;
- }
-
- public void setAutomaticInvocation(Boolean automaticInvocation) {
- isAutomaticInvocation = automaticInvocation;
- }
-
- public String getOperationParams() {
- return operationParams;
- }
-
- public void setOperationParams(String operationParams) {
- this.operationParams = operationParams;
- }
-
- public Boolean getCancelPending() {
- return isCancelPending;
- }
-
- public void setCancelPending(Boolean cancelPending) {
- isCancelPending = cancelPending;
- }
-
- public ProblemDetails getError() {
- return error;
- }
-
- public void setError(ProblemDetails error) {
- this.error = error;
- }
-
- public Links getLinks() {
- return links;
- }
-
- public void setLinks(Links links) {
- this.links = links;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java
deleted file mode 100644
index 2dff432c3b..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class NsLinkPortInfo {
- @NotNull
- private String id;
- @NotNull
- private ResourceHandle resourceHandle;
- private NsCpHandle nsCpHandle;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public ResourceHandle getResourceHandle() {
- return resourceHandle;
- }
-
- public void setResourceHandle(ResourceHandle resourceHandle) {
- this.resourceHandle = resourceHandle;
- }
-
- public NsCpHandle getNsCpHandle() {
- return nsCpHandle;
- }
-
- public void setNsCpHandle(NsCpHandle nsCpHandle) {
- this.nsCpHandle = nsCpHandle;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsOperationKey.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsOperationKey.java
deleted file mode 100644
index 2088d68b56..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsOperationKey.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * The operation key object for NS <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-09-15
- */
-public class NsOperationKey {
-
- /**
- * The subscriber id
- */
- private String globalSubscriberId;
-
- /**
- * The serviceType
- */
- private String serviceType;
-
- /**
- * The service ID
- */
- private String serviceId;
-
- /**
- * The Operation ID
- */
- private String operationId;
-
- /**
- * the NS template uuid
- */
- private String nodeTemplateUUID;
-
- /**
- * @return Returns the globalSubscriberId.
- */
- public String getGlobalSubscriberId() {
- return globalSubscriberId;
- }
-
- /**
- * @param globalSubscriberId The globalSubscriberId to set.
- */
- public void setGlobalSubscriberId(String globalSubscriberId) {
- this.globalSubscriberId = globalSubscriberId;
- }
-
- /**
- * @return Returns the serviceType.
- */
- public String getServiceType() {
- return serviceType;
- }
-
- /**
- * @param serviceType The serviceType to set.
- */
- public void setServiceType(String serviceType) {
- this.serviceType = serviceType;
- }
-
- /**
- * <br>
- *
- * @return
- * @since ONAP Amsterdam Release
- */
- public String getServiceId() {
- return serviceId;
- }
-
- /**
- * <br>
- *
- * @param serviceId
- * @since ONAP Amsterdam Release
- */
- public void setServiceId(String serviceId) {
- this.serviceId = serviceId;
- }
-
- /**
- * <br>
- *
- * @return
- * @since ONAP Amsterdam Release
- */
- public String getOperationId() {
- return operationId;
- }
-
- /**
- * <br>
- *
- * @param operationId
- * @since ONAP Amsterdam Release
- */
- public void setOperationId(String operationId) {
- this.operationId = operationId;
- }
-
- /**
- * @return Returns the nodeTemplateUUID.
- */
- public String getNodeTemplateUUID() {
- return nodeTemplateUUID;
- }
-
- /**
- * @param nodeTemplateUUID The nodeTemplateUUID to set.
- */
- public void setNodeTemplateUUID(String nodeTemplateUUID) {
- this.nodeTemplateUUID = nodeTemplateUUID;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsParameters.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsParameters.java
deleted file mode 100644
index e82ee2a79a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsParameters.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class NsParameters {
-
- private List<LocationConstraint> locationConstraints;
-
- private Map<String, Object> additionalParamForNs = new HashMap<>();
-
- /**
- * @return Returns the locationConstraints.
- */
- public List<LocationConstraint> getLocationConstraints() {
- return locationConstraints;
- }
-
- /**
- * @param locationConstraints The locationConstraints to set.
- */
- public void setLocationConstraints(List<LocationConstraint> locationConstraints) {
- this.locationConstraints = locationConstraints;
- }
-
-
- /**
- * @return Returns the additionalParamForNs.
- */
- public Map<String, Object> getAdditionalParamForNs() {
- return additionalParamForNs;
- }
-
-
- /**
- * @param additionalParamForNs The additionalParamForNs to set.
- */
- public void setAdditionalParamForNs(Map<String, Object> additionalParamForNs) {
- this.additionalParamForNs = additionalParamForNs;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsProgressStatus.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsProgressStatus.java
deleted file mode 100644
index a7e72efb62..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsProgressStatus.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-/**
- * <br>
- * <p>
- * </p>
- * response model of query operation status
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class NsProgressStatus {
-
- String jobId;
-
- ResponseDescriptor responseDescriptor;
-
- List<ResponseDescriptor> responseHistoryList;
-
- /**
- * @return Returns the jobId.
- */
- public String getJobId() {
- return jobId;
- }
-
- /**
- * @param jobId The jobId to set.
- */
- public void setJobId(String jobId) {
- this.jobId = jobId;
- }
-
- /**
- * @return Returns the responseDescriptor.
- */
- public ResponseDescriptor getResponseDescriptor() {
- return responseDescriptor;
- }
-
- /**
- * @param responseDescriptor The responseDescriptor to set.
- */
- public void setResponseDescriptor(ResponseDescriptor responseDescriptor) {
- this.responseDescriptor = responseDescriptor;
- }
-
- /**
- * @return Returns the responseHistoryList.
- */
- public List<ResponseDescriptor> getResponseHistoryList() {
- return responseHistoryList;
- }
-
- /**
- * @param responseHistoryList The responseHistoryList to set.
- */
- public void setResponseHistoryList(List<ResponseDescriptor> responseHistoryList) {
- this.responseHistoryList = responseHistoryList;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java
deleted file mode 100644
index 59acf564c2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class NsScaleInfo {
- @NotNull
- private String nsScalingAspectId;
- @NotNull
- private String nsScaleLevelId;
-
- public String getNsScalingAspectId() {
- return nsScalingAspectId;
- }
-
- public void setNsScalingAspectId(String nsScalingAspectId) {
- this.nsScalingAspectId = nsScalingAspectId;
- }
-
- public String getNsScaleLevelId() {
- return nsScaleLevelId;
- }
-
- public void setNsScaleLevelId(String nsScaleLevelId) {
- this.nsScaleLevelId = nsScaleLevelId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleParameters.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleParameters.java
deleted file mode 100644
index 6d089c0479..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleParameters.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 CMCC Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-/**
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-26
- */
-public class NsScaleParameters {
-
- private List<ScaleNsByStepsData> scaleNsByStepsData;
-
- private String scaleType;
-
- /**
- * @return Returns the scaleNsByStepsData.
- */
- public List<ScaleNsByStepsData> getScaleNsByStepsData() {
- return scaleNsByStepsData;
- }
-
- /**
- * @param scaleNsByStepsData The scaleNsByStepsData to set.
- */
- public void setScaleNsByStepsData(List<ScaleNsByStepsData> scaleNsByStepsData) {
- this.scaleNsByStepsData = scaleNsByStepsData;
- }
-
- /**
- * @return Returns the scale Type.
- */
- public String getScaleType() {
- return scaleType;
- }
-
- /**
- * @param scaleType The scaleType to set.
- */
- public void setScaleType(String scaleType) {
- this.scaleType = scaleType;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleReq.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleReq.java
deleted file mode 100644
index 79ed02c69f..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleReq.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 CMCC Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-/**
- * <br>
- * <p>
- * </p>
- * request model for scale
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-26
- */
-public class NsScaleReq extends NsScaleParameters {
-
- String nsInstanceId;
-
- /**
- * @return Returns the nsInstanceId.
- */
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- /**
- * @param nsInstanceId The nsInstanceId to set.
- */
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java
deleted file mode 100644
index ed2debd2e6..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class NsVirtualLinkInfo {
- @NotNull
- private String id;
- @NotNull
- private String nsVirtualLinkDescId;
- @NotNull
- private List<ResourceHandle> resourceHandle;
- private List<NsLinkPortInfo> linkPort;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getNsVirtualLinkDescId() {
- return nsVirtualLinkDescId;
- }
-
- public void setNsVirtualLinkDescId(String nsVirtualLinkDescId) {
- this.nsVirtualLinkDescId = nsVirtualLinkDescId;
- }
-
- public List<ResourceHandle> getResourceHandle() {
- return resourceHandle;
- }
-
- public void setResourceHandle(List<ResourceHandle> resourceHandle) {
- this.resourceHandle = resourceHandle;
- }
-
- public List<NsLinkPortInfo> getLinkPort() {
- return linkPort;
- }
-
- public void setLinkPort(List<NsLinkPortInfo> linkPort) {
- this.linkPort = linkPort;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java
deleted file mode 100644
index b7324e50fe..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.Map;
-
-public class ParamsForVnf {
- private String vnfProfileId;
- private Map<String, Object> additionalParams;
-
- public String getVnfProfileId() {
- return vnfProfileId;
- }
-
- public void setVnfProfileId(String vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-
- public Map<String, Object> getAdditionalParams() {
- return additionalParams;
- }
-
- public void setAdditionalParams(Map<String, Object> additionalParams) {
- this.additionalParams = additionalParams;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java
deleted file mode 100644
index d5d091fcb1..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class PnfExtCpData {
- private String cpInstanceI16;
- private String cpdId;
- private List<CpProtocolData> cpProtocolData;
-
- public String getCpInstanceI16() {
- return cpInstanceI16;
- }
-
- public void setCpInstanceI16(String cpInstanceI16) {
- this.cpInstanceI16 = cpInstanceI16;
- }
-
- public String getCpdId() {
- return cpdId;
- }
-
- public void setCpdId(String cpdId) {
- this.cpdId = cpdId;
- }
-
- public List<CpProtocolData> getCpProtocolData() {
- return cpProtocolData;
- }
-
- public void setCpProtocolData(List<CpProtocolData> cpProtocolData) {
- this.cpProtocolData = cpProtocolData;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java
deleted file mode 100644
index 402cb83147..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class PnfExtCpInfo {
- @NotNull
- private String cpInstanceId;
- @NotNull
- private String cpdId;
- @NotNull
- private List<CpProtocolData> cpProtocolData;
-
- public String getCpInstanceI16() {
- return cpInstanceId;
- }
-
- public void setCpInstanceI16(String cpInstanceI16) {
- this.cpInstanceId = cpInstanceI16;
- }
-
- public String getCpdId() {
- return cpdId;
- }
-
- public void setCpdId(String cpdId) {
- this.cpdId = cpdId;
- }
-
- public List<CpProtocolData> getCpProtocolData() {
- return cpProtocolData;
- }
-
- public void setCpProtocolData(List<CpProtocolData> cpProtocolData) {
- this.cpProtocolData = cpProtocolData;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java
deleted file mode 100644
index a1cc11bd0c..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class PnfInfo {
-
- @NotNull
- private String pnfId;
- @NotNull
- private String pnfName;
- @NotNull
- private String pnfdId;
- @NotNull
- private String pnfdInfoId;
- @NotNull
- private String pnfProfileId;
- private List<PnfExtCpData> cpData;
-
- /***
- *
- * @return id of pnf
- */
- public String getPnfId() {
- return pnfId;
- }
-
- public void setPnfId(String pnfId) {
- this.pnfId = pnfId;
- }
-
- public String getPnfName() {
- return pnfName;
- }
-
- public void setPnfName(String pnfName) {
- this.pnfName = pnfName;
- }
-
- public String getPnfdId() {
- return pnfdId;
- }
-
- public void setPnfdId(String pnfdId) {
- this.pnfdId = pnfdId;
- }
-
- public String getPnfProfileId() {
- return pnfProfileId;
- }
-
- public void setPnfProfileId(String pnfProfileId) {
- this.pnfProfileId = pnfProfileId;
- }
-
- public List<PnfExtCpData> getCpData() {
- return cpData;
- }
-
- public void setCpData(List<PnfExtCpData> cpData) {
- this.cpData = cpData;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java
deleted file mode 100644
index 8318a8ccff..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class PortRange {
- @NotNull
- private int lowerPort;
- @NotNull
- private int upperPort;
-
- public int getLowerPort() {
- return lowerPort;
- }
-
- public void setLowerPort(int lowerPort) {
- this.lowerPort = lowerPort;
- }
-
- public int getUpperPort() {
- return upperPort;
- }
-
- public void setUpperPort(int upperPort) {
- this.upperPort = upperPort;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java
deleted file mode 100644
index efaa5de7a8..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class ProblemDetails {
- private String type;
- private String title;
- private int status;
- private String detail;
- private String instance;
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public int getStatus() {
- return status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public String getDetail() {
- return detail;
- }
-
- public void setDetail(String detail) {
- this.detail = detail;
- }
-
- public String getInstance() {
- return instance;
- }
-
- public void setInstance(String instance) {
- this.instance = instance;
- }
-
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java
deleted file mode 100644
index 062a6aa32a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class ResourceChanges {
- private List<AffectedVnf> affectedVnfs;
- private List<AffectedPnf> affectedPnfs;
- private List<AffectedVirtualLink> affectedVls;
- private List<AffectedVnffg> affectedVnffgs;
- private List<AffectedNs> affectedNss;
- private List<AffectedSap> affectedSaps;
-
- public List<AffectedVnf> getAffectedVnfs() {
- return affectedVnfs;
- }
-
- public void setAffectedVnfs(List<AffectedVnf> affectedVnfs) {
- this.affectedVnfs = affectedVnfs;
- }
-
- public List<AffectedPnf> getAffectedPnfs() {
- return affectedPnfs;
- }
-
- public void setAffectedPnfs(List<AffectedPnf> affectedPnfs) {
- this.affectedPnfs = affectedPnfs;
- }
-
- public List<AffectedVirtualLink> getAffectedVls() {
- return affectedVls;
- }
-
- public void setAffectedVls(List<AffectedVirtualLink> affectedVls) {
- this.affectedVls = affectedVls;
- }
-
- public List<AffectedVnffg> getAffectedVnffgs() {
- return affectedVnffgs;
- }
-
- public void setAffectedVnffgs(List<AffectedVnffg> affectedVnffgs) {
- this.affectedVnffgs = affectedVnffgs;
- }
-
- public List<AffectedNs> getAffectedNss() {
- return affectedNss;
- }
-
- public void setAffectedNss(List<AffectedNs> affectedNss) {
- this.affectedNss = affectedNss;
- }
-
- public List<AffectedSap> getAffectedSaps() {
- return affectedSaps;
- }
-
- public void setAffectedSaps(List<AffectedSap> affectedSaps) {
- this.affectedSaps = affectedSaps;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java
deleted file mode 100644
index fbfecaa007..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class ResourceHandle {
- private String vimId;
- private String resourceProviderId;
- private String resourceId;
- private String vimLevelResourceType;
-
- public String getVimId() {
- return vimId;
- }
-
- public void setVimId(String vimId) {
- this.vimId = vimId;
- }
-
- public String getResourceProviderId() {
- return resourceProviderId;
- }
-
- public void setResourceProviderId(String resourceProviderId) {
- this.resourceProviderId = resourceProviderId;
- }
-
- public String getResourceId() {
- return resourceId;
- }
-
- public void setResourceId(String resourceId) {
- this.resourceId = resourceId;
- }
-
- public String getVimLevelResourceType() {
- return vimLevelResourceType;
- }
-
- public void setVimLevelResourceType(String vimLevelResourceType) {
- this.vimLevelResourceType = vimLevelResourceType;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResponseDescriptor.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResponseDescriptor.java
deleted file mode 100644
index 3ea51c107b..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResponseDescriptor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- * <br>
- * <p>
- * </p>
- * response model of query operation status
- *
- * @author
- * @version SDNO 0.5 September 3, 2016
- */
-public class ResponseDescriptor {
-
- String status;
-
- String progress;
-
- String statusDescription;
-
- Integer errorCode;
-
- Integer responseId;
-
- /**
- * @return Returns the status.
- */
- public String getStatus() {
- return status;
- }
-
- /**
- * @param status The status to set.
- */
- public void setStatus(String status) {
- this.status = status;
- }
-
- /**
- * @return Returns the progress.
- */
- public String getProgress() {
- return progress;
- }
-
- /**
- * @param progress The progress to set.
- */
- public void setProgress(String progress) {
- this.progress = progress;
- }
-
- /**
- * @return Returns the statusDescription.
- */
- public String getStatusDescription() {
- return statusDescription;
- }
-
- /**
- * @param statusDescription The statusDescription to set.
- */
- public void setStatusDescription(String statusDescription) {
- this.statusDescription = statusDescription;
- }
-
- /**
- * @return Returns the errorCode.
- */
- public Integer getErrorCode() {
- return errorCode;
- }
-
- /**
- * @param errorCode The errorCode to set.
- */
- public void setErrorCode(Integer errorCode) {
- this.errorCode = errorCode;
- }
-
- /**
- * @return Returns the responseId.
- */
- public Integer getResponseId() {
- return responseId;
- }
-
- /**
- * @param responseId The responseId to set.
- */
- public void setResponseId(Integer responseId) {
- this.responseId = responseId;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/RestfulResponse.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/RestfulResponse.java
deleted file mode 100644
index 27c9a89282..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/RestfulResponse.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.Map;
-
-/**
- * The Unified Restful Reponse Class <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-09-06
- */
-public class RestfulResponse {
-
- // the response content
- private String responseContent;
-
- // the response status
- private int status;
-
- // the response header
- private Map<String, String> respHeaderMap;
-
- public RestfulResponse() {
- this.status = -1;
-
- this.respHeaderMap = null;
- }
-
- public int getStatus() {
- return this.status;
- }
-
- public void setStatus(int status) {
- this.status = status;
- }
-
- public Map<String, String> getRespHeaderMap() {
- return this.respHeaderMap;
- }
-
- public void setRespHeaderMap(Map<String, String> header) {
- this.respHeaderMap = header;
- }
-
- public int getRespHeaderInt(String key) {
- if (this.respHeaderMap != null) {
- String result = this.respHeaderMap.get(key);
- if (result != null) {
- return Integer.parseInt(result);
- }
- }
- return -1;
- }
-
- public long getRespHeaderLong(String key) {
- if (this.respHeaderMap != null) {
- String result = this.respHeaderMap.get(key);
- if (result != null) {
- return Long.parseLong(result);
- }
- }
- return -1L;
- }
-
- public String getRespHeaderStr(String key) {
- if (this.respHeaderMap != null) {
- return this.respHeaderMap.get(key);
- }
- return null;
- }
-
- public String getResponseContent() {
- return this.responseContent;
- }
-
- public void setResponseContent(String responseString) {
- this.responseContent = responseString;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java
deleted file mode 100644
index d8e96e22f5..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-public class SapData {
- private String sapdId;
- private String sapName;
- private String description;
- private List<CpProtocolData> sapProtocolData;
-
- public String getSapdId() {
- return sapdId;
- }
-
- public void setSapdId(String sapdId) {
- this.sapdId = sapdId;
- }
-
- public String getSapName() {
- return sapName;
- }
-
- public void setSapName(String sapName) {
- this.sapName = sapName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public List<CpProtocolData> getSapProtocolData() {
- return sapProtocolData;
- }
-
- public void setSapProtocolData(List<CpProtocolData> sapProtocolData) {
- this.sapProtocolData = sapProtocolData;
- }
-
-
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java
deleted file mode 100644
index 182aceb127..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class SapInfo {
- @NotNull
- private String id;
- @NotNull
- private String sapdId;
- @NotNull
- private String sapName;
- @NotNull
- private String description;
- @NotNull
- private List<CpProtocolInfo> sapProtocolInfo;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getSapdId() {
- return sapdId;
- }
-
- public void setSapdId(String sapdId) {
- this.sapdId = sapdId;
- }
-
- public String getSapName() {
- return sapName;
- }
-
- public void setSapName(String sapName) {
- this.sapName = sapName;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public List<CpProtocolInfo> getSapProtocolInfo() {
- return sapProtocolInfo;
- }
-
- public void setSapProtocolInfo(List<CpProtocolInfo> sapProtocolInfo) {
- this.sapProtocolInfo = sapProtocolInfo;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsByStepsData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsByStepsData.java
deleted file mode 100644
index f9d6274643..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsByStepsData.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 CMCC Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-/**
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-26
- */
-public class ScaleNsByStepsData {
-
- /**
- * scaling Direction
- */
- private String scalingDirection;
-
- /**
- * aspect ID
- */
- private String aspectId;
-
- /**
- * number of Steps
- */
- private Integer numberOfSteps;
-
- /**
- * @return Returns the scalingDirection.
- */
- public String getScalingDirection() {
- return scalingDirection;
- }
-
- /**
- * @param scalingDirection The scalingDirection to set.
- */
- public void setScalingDirection(String scalingDirection) {
- this.scalingDirection = scalingDirection;
- }
-
- /**
- * @return Returns the aspectId.
- */
- public String getAspectId() {
- return aspectId;
- }
-
- /**
- * @param aspectId The aspectId to set.
- */
- public void setAspectId(String aspectId) {
- this.aspectId = aspectId;
- }
-
- /**
- * @return Returns the numberOfSteps.
- */
- public Integer getNumberOfSteps() {
- return numberOfSteps;
- }
-
- /**
- * @param numberOfSteps The numberOfSteps to set.
- */
- public void setNumberOfSteps(int numberOfSteps) {
- this.numberOfSteps = numberOfSteps;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsData.java
deleted file mode 100644
index bd50827549..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ScaleNsData.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 CMCC Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.List;
-
-/**
- * aim to wrap List<ScaleNsByStepsData> as a new list then be provided for the usage of vfc json
- *
- * added on 2018/01/30 by Qihui Zhao from CMCC
- */
-
-public class ScaleNsData {
-
- private List<ScaleNsByStepsData> scaleNsByStepsData;
-
- /**
- * @return Returns the scaleNsByStepsData.
- */
- public List<ScaleNsByStepsData> getScaleNsByStepsData() {
- return scaleNsByStepsData;
- }
-
- /**
- * @param scaleNsByStepsData The scaleNsByStepsData to set.
- */
- public void setScaleNsByStepsData(List<ScaleNsByStepsData> scaleNsByStepsData) {
- this.scaleNsByStepsData = scaleNsByStepsData;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VFCScaleData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VFCScaleData.java
deleted file mode 100644
index 1939fa4ec4..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VFCScaleData.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 CMCC Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Object totally matches required VFC input json format JsonUtil.marshal will convert this Object to string
- *
- * added on 2018/01/30 by Qihui Zhao from CMCC
- */
-
-public class VFCScaleData {
-
- private String nsInstanceId;
-
- private String scaleType;
-
- private List<ScaleNsData> scaleNsData = new ArrayList<>();
-
- /**
- * @return Returns the nsInstanceId.
- */
- public String getNsInstanceId() {
- return nsInstanceId;
- }
-
- /**
- * @param nsInstanceId The nsInstanceId to set.
- */
- public void setNsInstanceId(String nsInstanceId) {
- this.nsInstanceId = nsInstanceId;
- }
-
- /**
- * @return Returns the scale Type.
- */
- public String getScaleType() {
- return scaleType;
- }
-
- /**
- * @param scaleType The scaleType to set.
- */
- public void setScaleType(String scaleType) {
- this.scaleType = scaleType;
- }
-
- /**
- * @return Returns the scaleNsDate.
- */
- public List<ScaleNsData> getScaleNsData() {
- return scaleNsData;
- }
-
- /**
- * The scaleNsData to set.
- */
- public void setScaleNsData(List<ScaleNsByStepsData> scaleNsByStepsData) {
- ScaleNsData scaleNsDataObj = new ScaleNsData();
- scaleNsDataObj.setScaleNsByStepsData(scaleNsByStepsData);
-
- this.scaleNsData.add(scaleNsDataObj);
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VimLocation.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VimLocation.java
deleted file mode 100644
index 456835b431..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VimLocation.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.model;
-
-/**
- *
- * <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-10-18
- */
-public class VimLocation {
- private String vimId;
-
-
- /**
- * @return Returns the vimId.
- */
- public String getVimId() {
- return vimId;
- }
-
-
- /**
- * @param vimId The vimId to set.
- */
- public void setVimId(String vimId) {
- this.vimId = vimId;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java
deleted file mode 100644
index ccd6532ee0..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.Map;
-
-public class VnfInstance {
- @NotNull
- private String id;
- private String vnfInstanceName;
- private String vnfInstanceDescription;
- @NotNull
- private String vnfdId;
- @NotNull
- private String vnfProvider;
- @NotNull
- private String vnfProductName;
- @NotNull
- private String vnfSoftwareVersion;
- @NotNull
- private String vnfdVersion;
- @NotNull
- private String vnfPkgId;
- private Map<String, Object> vnfConfigurableProperties;
- private String vimId;
-
- private enum instantiationState {
- NOT_INSTANTIATED, INSTANTIATED
- };
-
- private InstantiatedVnfInfo instantiatedVnfInfo;
- private Map<String, Object> metadata;
- private Map<String, Object> extensions;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVnfInstanceName() {
- return vnfInstanceName;
- }
-
- public void setVnfInstanceName(String vnfInstanceName) {
- this.vnfInstanceName = vnfInstanceName;
- }
-
- public String getVnfInstanceDescription() {
- return vnfInstanceDescription;
- }
-
- public void setVnfInstanceDescription(String vnfInstanceDescription) {
- this.vnfInstanceDescription = vnfInstanceDescription;
- }
-
- public String getVnfdId() {
- return vnfdId;
- }
-
- public void setVnfdId(String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public String getVnfProvider() {
- return vnfProvider;
- }
-
- public void setVnfProvider(String vnfProvider) {
- this.vnfProvider = vnfProvider;
- }
-
- public String getVnfProductName() {
- return vnfProductName;
- }
-
- public void setVnfProductName(String vnfProductName) {
- this.vnfProductName = vnfProductName;
- }
-
- public String getVnfSoftwareVersion() {
- return vnfSoftwareVersion;
- }
-
- public void setVnfSoftwareVersion(String vnfSoftwareVersion) {
- this.vnfSoftwareVersion = vnfSoftwareVersion;
- }
-
- public String getVnfdVersion() {
- return vnfdVersion;
- }
-
- public void setVnfdVersion(String vnfdVersion) {
- this.vnfdVersion = vnfdVersion;
- }
-
- public String getVnfPkgId() {
- return vnfPkgId;
- }
-
- public void setVnfPkgId(String vnfPkgId) {
- this.vnfPkgId = vnfPkgId;
- }
-
- public Map<String, Object> getVnfConfigurableProperties() {
- return vnfConfigurableProperties;
- }
-
- public void setVnfConfigurableProperties(Map<String, Object> vnfConfigurableProperties) {
- this.vnfConfigurableProperties = vnfConfigurableProperties;
- }
-
- public String getVimId() {
- return vimId;
- }
-
- public void setVimId(String vimId) {
- this.vimId = vimId;
- }
-
- public InstantiatedVnfInfo getInstantiatedVnfInfo() {
- return instantiatedVnfInfo;
- }
-
- public void setInstantiatedVnfInfo(InstantiatedVnfInfo instantiatedVnfInfo) {
- this.instantiatedVnfInfo = instantiatedVnfInfo;
- }
-
- public Map<String, Object> getMetadata() {
- return metadata;
- }
-
- public void setMetadata(Map<String, Object> metadata) {
- this.metadata = metadata;
- }
-
- public Map<String, Object> getExtensions() {
- return extensions;
- }
-
- public void setExtensions(Map<String, Object> extensions) {
- this.extensions = extensions;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java
deleted file mode 100644
index 83345fcb4c..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class VnfInstanceData {
- private String vnfInstanceId;
- private String vnfProfileId;
-
- public String getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(String vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-
- public String getVnfProfileId() {
- return vnfProfileId;
- }
-
- public void setVnfProfileId(String vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java
deleted file mode 100644
index 0b09d066fa..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class VnfLinkPortInfo {
- @NotNull
- private String id;
- @NotNull
- private ResourceHandle resourceHandle;
- private String cpInstanceId;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public ResourceHandle getResourceHandle() {
- return resourceHandle;
- }
-
- public void setResourceHandle(ResourceHandle resourceHandle) {
- this.resourceHandle = resourceHandle;
- }
-
- public String getCpInstanceId() {
- return cpInstanceId;
- }
-
- public void setCpInstanceId(String cpInstanceId) {
- this.cpInstanceId = cpInstanceId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java
deleted file mode 100644
index 5db3060b88..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/***
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-public class VnfLocationConstraint {
- private String vnfProfileId;
- private LocationConstraint locationConstraints;
-
- public String getVnfProfileId() {
- return vnfProfileId;
- }
-
- public void setVnfProfileId(String vnfProfileId) {
- this.vnfProfileId = vnfProfileId;
- }
-
- public LocationConstraint getLocationConstraints() {
- return locationConstraints;
- }
-
- public void setLocationConstraints(LocationConstraint locationConstraints) {
- this.locationConstraints = locationConstraints;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java
deleted file mode 100644
index e702edc821..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-
-public class VnfScaleInfo {
- @NotNull
- private String aspectlId;
- @NotNull
- private int scaleLevel;
-
- public String getAspectlId() {
- return aspectlId;
- }
-
- public void setAspectlId(String aspectlId) {
- this.aspectlId = aspectlId;
- }
-
- public int getScaleLevel() {
- return scaleLevel;
- }
-
- public void setScaleLevel(int scaleLevel) {
- this.scaleLevel = scaleLevel;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java
deleted file mode 100644
index 9f41a383fc..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-import java.util.Map;
-
-public class VnfVirtualLinkResourceInfo {
- @NotNull
- private String id;
- @NotNull
- private String virtualLinkDescId;
- @NotNull
- private ResourceHandle networkResource;
- private String reservationId;
- private List<VnfLinkPortInfo> vnfLinkPorts;
- Map<String, Object> metadata;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVirtualLinkDescId() {
- return virtualLinkDescId;
- }
-
- public void setVirtualLinkDescId(String virtualLinkDescId) {
- this.virtualLinkDescId = virtualLinkDescId;
- }
-
- public ResourceHandle getNetworkResource() {
- return networkResource;
- }
-
- public void setNetworkResource(ResourceHandle networkResource) {
- this.networkResource = networkResource;
- }
-
- public String getReservationId() {
- return reservationId;
- }
-
- public void setReservationId(String reservationId) {
- this.reservationId = reservationId;
- }
-
- public List<VnfLinkPortInfo> getVnfLinkPorts() {
- return vnfLinkPorts;
- }
-
- public void setVnfLinkPorts(List<VnfLinkPortInfo> vnfLinkPorts) {
- this.vnfLinkPorts = vnfLinkPorts;
- }
-
- public Map<String, Object> getMetadata() {
- return metadata;
- }
-
- public void setMetadata(Map<String, Object> metadata) {
- this.metadata = metadata;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java
deleted file mode 100644
index ec629effd2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class VnfcCpInfo {
- @NotNull
- private String id;
- @NotNull
- private String cpdId;
- private String vnfExtCpId;
- private List<CpProtocolInfo> cpProtocolInfo;
- private String vnfLinkPortId;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getCpdId() {
- return cpdId;
- }
-
- public void setCpdId(String cpdId) {
- this.cpdId = cpdId;
- }
-
- public String getVnfExtCpId() {
- return vnfExtCpId;
- }
-
- public void setVnfExtCpId(String vnfExtCpId) {
- this.vnfExtCpId = vnfExtCpId;
- }
-
- public List<CpProtocolInfo> getCpProtocolInfo() {
- return cpProtocolInfo;
- }
-
- public void setCpProtocolInfo(List<CpProtocolInfo> cpProtocolInfo) {
- this.cpProtocolInfo = cpProtocolInfo;
- }
-
- public String getVnfLinkPortId() {
- return vnfLinkPortId;
- }
-
- public void setVnfLinkPortId(String vnfLinkPortId) {
- this.vnfLinkPortId = vnfLinkPortId;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java
deleted file mode 100644
index 1f7aa67b8d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-import java.util.Map;
-
-public class VnfcResourceInfo {
- @NotNull
- private String id;
- @NotNull
- private String vduId;
- @NotNull
- private ResourceHandle computeResource;
- private List<String> storageResourceIds;
- private String reservationId;
- private List<VnfcCpInfo> vnfcCpInfo;
- private Map<String, Object> metadata;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVduId() {
- return vduId;
- }
-
- public void setVduId(String vduId) {
- this.vduId = vduId;
- }
-
- public ResourceHandle getComputeResource() {
- return computeResource;
- }
-
- public void setComputeResource(ResourceHandle computeResource) {
- this.computeResource = computeResource;
- }
-
- public List<String> getStorageResourceIds() {
- return storageResourceIds;
- }
-
- public void setStorageResourceIds(List<String> storageResourceIds) {
- this.storageResourceIds = storageResourceIds;
- }
-
- public String getReservationId() {
- return reservationId;
- }
-
- public void setReservationId(String reservationId) {
- this.reservationId = reservationId;
- }
-
- public List<VnfcCpInfo> getVnfcCpInfo() {
- return vnfcCpInfo;
- }
-
- public void setVnfcCpInfo(List<VnfcCpInfo> vnfcCpInfo) {
- this.vnfcCpInfo = vnfcCpInfo;
- }
-
- public Map<String, Object> getMetadata() {
- return metadata;
- }
-
- public void setMetadata(Map<String, Object> metadata) {
- this.metadata = metadata;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java
deleted file mode 100644
index c02d5177db..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-public class VnffgInfo {
- @NotNull
- private String id;
- @NotNull
- private String vnffgdId;
- @NotNull
- private List<String> vnfInstanceId;
- private String pnfInfoId;
- @NotNull
- private List<String> nsVirtualLinkInfoId;
- @NotNull
- private List<NsCpHandle> nsCpHandle;
- @NotNull
- private List<NfpInfo> nfpInfo;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getVnffgdId() {
- return vnffgdId;
- }
-
- public void setVnffgdId(String vnffgdId) {
- this.vnffgdId = vnffgdId;
- }
-
- public List<String> getVnfInstanceId() {
- return vnfInstanceId;
- }
-
- public void setVnfInstanceId(List<String> vnfInstanceId) {
- this.vnfInstanceId = vnfInstanceId;
- }
-
- public String getPnfInfoId() {
- return pnfInfoId;
- }
-
- public void setPnfInfoId(String pnfInfoId) {
- this.pnfInfoId = pnfInfoId;
- }
-
- public List<String> getNsVirtualLinkInfoId() {
- return nsVirtualLinkInfoId;
- }
-
- public void setNsVirtualLinkInfoId(List<String> nsVirtualLinkInfoId) {
- this.nsVirtualLinkInfoId = nsVirtualLinkInfoId;
- }
-
- public List<NsCpHandle> getNsCpHandle() {
- return nsCpHandle;
- }
-
- public void setNsCpHandle(List<NsCpHandle> nsCpHandle) {
- this.nsCpHandle = nsCpHandle;
- }
-
- public List<NfpInfo> getNfpInfo() {
- return nfpInfo;
- }
-
- public void setNfpInfo(List<NfpInfo> nfpInfo) {
- this.nfpInfo = nfpInfo;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/AaiUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/AaiUtil.java
deleted file mode 100644
index 7f81dfbdaf..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/AaiUtil.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-
-/**
- * Implement class of operating aai database table <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-public class AaiUtil {
-
- public static RestfulResponse addRelation(String globalSubsriberId, String serviceType, String serviceInstanceId,
- String resourceInstanceId) {
- // sent rest to aai to add relation for service and ns.
-
- return null;
- }
-
- public static RestfulResponse removeRelation(String globalSubsriberId, String serviceType, String serviceInstanceId,
- String resourceInstanceId) {
- // sent rest to aai to remove relation between service an ns.
- return null;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java
deleted file mode 100644
index 2dcdf11316..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import javax.ws.rs.HEAD;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Response;
-import org.apache.http.HttpStatus;
-import org.springframework.stereotype.Component;
-
-/**
- * Health Check <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-@Path("/")
-@Component
-public class HealthCheckHandler {
-
-
- private static final String CHECK_HTML =
- "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Health Check</title></head><body>Application ready</body></html>";
-
- public static final Response HEALTH_CHECK_RESPONSE = Response.status(HttpStatus.SC_OK).entity(CHECK_HTML).build();
-
- @HEAD
- @Path("/healthcheck")
- @Produces("text/html")
- public Response healthcheck(@QueryParam("requestId") String requestId) {
- return HEALTH_CHECK_RESPONSE;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java
deleted file mode 100644
index 5a89c04a5a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.onap.so.adapters.vfc.model.NSResourceInputParameter;
-import org.onap.so.adapters.vfc.model.NsOperationKey;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.onap.so.adapters.vfc.util.JsonUtil;
-import org.onap.so.adapters.vfc.util.ValidateUtil;
-import org.onap.so.db.request.beans.InstanceNfvoMapping;
-import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * The rest class for VF-c Adapter <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-@Component
-@Path("/v1/vfcadapter")
-public class VfcAdapterRest {
-
- private static final Logger logger = LoggerFactory.getLogger(VfcAdapterRest.class);
- private static final String REQUEST_DEBUG_MSG = "body from request is {}";
- private static final String APPLICATION_EXCEPTION = "ApplicationException: ";
- @Autowired
- private VfcManagerSol005 vfcManagerSol005;
-
- @Autowired
- private VfcManager driverMgr;
- @Autowired
- private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
-
- public VfcAdapterRest() {
-
- }
-
- /**
- * Create a NS <br>
- *
- * @param data http request
- * @return
- * @since ONAP Amsterdam Release
- */
- @POST
- @Path("/ns")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response createNfvoNs(String data) {
- try {
- ValidateUtil.assertObjectNotNull(data);
- logger.debug(REQUEST_DEBUG_MSG + data);
- NSResourceInputParameter nsInput = JsonUtil.unMarshal(data, NSResourceInputParameter.class);
- RestfulResponse rsp;
- if (nsInput.getNsParameters().getAdditionalParamForNs().containsKey("isSol005Interface")) {
- rsp = vfcManagerSol005.createNs(nsInput);
- } else {
- rsp = driverMgr.createNs(nsInput);
- }
-
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
- /**
- * Delete NS instance<br>
- *
- * @param data The http request
- * @param nsInstanceId The NS instance id
- * @return response
- * @since ONAP Amsterdam Release
- */
- @DELETE
- @Path("/ns/{nsInstanceId}")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response deleteNfvoNs(String data, @PathParam("nsInstanceId") String nsInstanceId) {
- try {
-
- ValidateUtil.assertObjectNotNull(data);
- logger.debug(REQUEST_DEBUG_MSG + data);
- NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp;
- InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
- if (instanceNfvoMapping != null) {
- rsp = vfcManagerSol005.deleteNs(nsOperationKey, nsInstanceId);
- } else {
- rsp = driverMgr.deleteNs(nsOperationKey, nsInstanceId);
- }
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
- /**
- * Query Operation job status <br>
- *
- * @param data The Http Request
- * @param jobId The job id
- * @return
- * @since ONAP Amsterdam Release
- */
- @POST
- @Path("/jobs/{jobId}")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response queryNfvoJobStatus(String data, @PathParam("jobId") String jobId) {
- try {
- ValidateUtil.assertObjectNotNull(data);
- logger.debug(REQUEST_DEBUG_MSG + data);
- NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp;
- InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByJobId(jobId);
- if (instanceNfvoMapping != null) {
- rsp = vfcManagerSol005.getNsProgress(nsOperationKey, jobId);
- } else {
- rsp = driverMgr.getNsProgress(nsOperationKey, jobId);
- }
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
- /**
- * Instantiate NS instance <br>
- *
- * @param data The http request
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Amsterdam Release
- */
- @POST
- @Path("/ns/{nsInstanceId}/instantiate")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response instantiateNfvoNs(String data, @PathParam("nsInstanceId") String nsInstanceId) {
- try {
- ValidateUtil.assertObjectNotNull(data);
- logger.debug(REQUEST_DEBUG_MSG + data);
- NSResourceInputParameter nsInput = JsonUtil.unMarshal(data, NSResourceInputParameter.class);
- RestfulResponse rsp;
- if (nsInput.getNsParameters().getAdditionalParamForNs().containsKey("isSol005Interface")) {
- rsp = vfcManagerSol005.instantiateNs(nsInstanceId, nsInput);
- } else {
- rsp = driverMgr.instantiateNs(nsInstanceId, nsInput);
- }
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
- /**
- * Terminate NS instance <br>
- *
- * @param data The http request
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Amsterdam Release
- */
- @POST
- @Path("/ns/{nsInstanceId}/terminate")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response terminateNfvoNs(String data, @PathParam("nsInstanceId") String nsInstanceId) {
- try {
- ValidateUtil.assertObjectNotNull(data);
- logger.debug(REQUEST_DEBUG_MSG + data);
- NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp;
- InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
- if (instanceNfvoMapping != null) {
- rsp = vfcManagerSol005.terminateNs(nsOperationKey, nsInstanceId);
- } else {
- rsp = driverMgr.terminateNs(nsOperationKey, nsInstanceId);
- }
-
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
- /**
- * Scale NS instance <br>
- *
- * @param servletReq The http request
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Amsterdam Release
- */
- @POST
- @Path("/ns/{nsInstanceId}/scale")
- @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
- public Response scaleNfvoNs(String data, @PathParam("nsInstanceId") String nsInstanceId) {
- try {
- ValidateUtil.assertObjectNotNull(data);
- logger.debug("Scale Ns Request Received.Body from request is {}" + data);
- NSResourceInputParameter nsInput = JsonUtil.unMarshal(data, NSResourceInputParameter.class);
- RestfulResponse rsp = driverMgr.scaleNs(nsInstanceId, nsInput);
- return buildResponse(rsp);
- } catch (ApplicationException e) {
- logger.debug(APPLICATION_EXCEPTION, e);
- return e.buildErrorResponse();
- }
- }
-
-
- /**
- * build response from restful response <br>
- *
- * @param rsp general response object
- * @return
- * @since ONAP Amsterdam Release
- */
- private Response buildResponse(RestfulResponse rsp) {
- return Response.status(rsp.getStatus()).entity(rsp.getResponseContent()).build();
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManager.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManager.java
deleted file mode 100644
index b817b5bf9a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManager.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.onap.so.adapters.vfc.constant.CommonConstant;
-import org.onap.so.adapters.vfc.constant.CommonConstant.Step;
-import org.onap.so.adapters.vfc.constant.DriverExceptionID;
-import org.onap.so.adapters.vfc.constant.HttpCode;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.onap.so.adapters.vfc.model.CustomerModel;
-import org.onap.so.adapters.vfc.model.NSResourceInputParameter;
-import org.onap.so.adapters.vfc.model.NsCreateReq;
-import org.onap.so.adapters.vfc.model.NsInstantiateReq;
-import org.onap.so.adapters.vfc.model.NsOperationKey;
-import org.onap.so.adapters.vfc.model.NsParameters;
-import org.onap.so.adapters.vfc.model.NsProgressStatus;
-import org.onap.so.adapters.vfc.model.NsScaleParameters;
-import org.onap.so.adapters.vfc.model.ResponseDescriptor;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.onap.so.adapters.vfc.model.VFCScaleData;
-import org.onap.so.adapters.vfc.util.JsonUtil;
-import org.onap.so.adapters.vfc.util.RestfulUtil;
-import org.onap.so.adapters.vfc.util.ValidateUtil;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.onap.so.requestsdb.RequestsDbConstant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.domain.Example;
-import org.springframework.stereotype.Component;
-
-/**
- * VF-C Manager <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-@Component
-@Primary
-public class VfcManager {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(VfcManager.class);
-
- /**
- * nfvo url map
- */
- private Map<String, String> nfvoUrlMap;
-
- @Autowired
- private ResourceOperationStatusRepository resourceOperationStatusRepository;
-
- @Autowired
- private RestfulUtil restfulUtil;
-
-
- public VfcManager() {
- nfvoUrlMap = new HashMap<>();
- nfvoUrlMap.put(Step.CREATE, CommonConstant.NFVO_CREATE_URL);
- nfvoUrlMap.put(Step.INSTANTIATE, CommonConstant.NFVO_INSTANTIATE_URL);
- nfvoUrlMap.put(Step.TERMINATE, CommonConstant.NFVO_TERMINATE_URL);
- nfvoUrlMap.put(Step.DELETE, CommonConstant.NFVO_DELETE_URL);
- nfvoUrlMap.put(Step.QUERY, CommonConstant.NFVO_QUERY_URL);
- nfvoUrlMap.put(Step.SCALE, CommonConstant.NFVO_SCALE_URL);
- }
-
- /**
- * create network service <br>
- *
- * @param segInput input parameters for current node from http request
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse createNs(NSResourceInputParameter segInput) throws ApplicationException {
-
- // Step1: get service template by node type
- String csarId = segInput.getNsServiceModelUUID();
- // nsdId for NFVO is "id" in the response, while for SDNO is "servcice template id"
- LOGGER.info("serviceTemplateId is {}, id is {}", csarId, csarId);
-
- LOGGER.info("create ns -> begin");
- // Step2: Prepare url and method type
- String url = getUrl(null, CommonConstant.Step.CREATE);
- String methodType = CommonConstant.MethodType.POST;
-
- // Step3: Prepare restful parameters and options
- NsCreateReq oRequest = new NsCreateReq();
- oRequest.setCsarId(csarId);
- oRequest.setNsName(segInput.getNsServiceName());
- oRequest.setDescription(segInput.getNsServiceDescription());
- CustomerModel context = new CustomerModel();
- context.setGlobalCustomerId(segInput.getNsOperationKey().getGlobalSubscriberId());
- context.setServiceType(segInput.getNsOperationKey().getServiceType());
- oRequest.setContext(context);
- String createReq = JsonUtil.marshal(oRequest);
-
- // Step4: Call NFVO or SDNO lcm to create ns
- RestfulResponse createRsp = restfulUtil.send(url, methodType, createReq);
- ValidateUtil.assertObjectNotNull(createRsp);
- LOGGER.info("create ns response status is : {}", createRsp.getStatus());
- LOGGER.info("create ns response content is : {}", createRsp.getResponseContent());
-
- // Step 5: save resource operation information
- ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
- segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- status = resourceOperationStatusRepository.save(status);
- if (!HttpCode.isSucess(createRsp.getStatus())) {
- LOGGER.error("update segment operation status : fail to create ns");
- status.setProgress("40");
- status.setStatusDescription("NS is created");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(createRsp.getStatus()));
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_CREATE_NS);
- }
- @SuppressWarnings("unchecked")
- Map<String, String> rsp = JsonUtil.unMarshal(createRsp.getResponseContent(), Map.class);
- String nsInstanceId = rsp.get(CommonConstant.NS_INSTANCE_ID);
- if (ValidateUtil.isStrEmpty(nsInstanceId)) {
- LOGGER.error("Invalid instanceId from create operation");
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSEE_FROM_CREATE_OPERATION);
- }
- LOGGER.info("create ns -> end");
- LOGGER.info("save segment and operaton info -> begin");
- // Step 6: add relation between service and NS
- AaiUtil.addRelation(segInput.getNsOperationKey().getGlobalSubscriberId(),
- segInput.getNsOperationKey().getServiceType(), segInput.getNsOperationKey().getServiceId(),
- nsInstanceId);
- LOGGER.info("save segment and operation info -> end");
- return createRsp;
- }
-
- /**
- * delete network service <br>
- *
- * @param nsOperationKey The operation key of the NS resource
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse deleteNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
- LOGGER.info("delete ns -> begin");
- // Step1: prepare url and methodType
- String url = getUrl(nsInstanceId, CommonConstant.Step.DELETE);
- String methodType = CommonConstant.MethodType.DELETE;
-
- // Step2: prepare restful parameters and options
- RestfulResponse deleteRsp = restfulUtil.send(url, methodType, "");
- ValidateUtil.assertObjectNotNull(deleteRsp);
- LOGGER.info("delete ns response status is : {}", deleteRsp.getStatus());
- LOGGER.info("delete ns response content is : {}", deleteRsp.getResponseContent());
- LOGGER.info("delete ns -> end");
-
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- if (!HttpCode.isSucess(deleteRsp.getStatus())) {
- LOGGER.error("fail to delete ns");
-
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_DELETE_NS);
- }
-
- // Step3: remove relation info between service and ns
- AaiUtil.removeRelation(nsOperationKey.getGlobalSubscriberId(), nsOperationKey.getServiceType(),
- nsOperationKey.getServiceId(), nsInstanceId);
- LOGGER.info("delete segment information -> end");
-
- // Step4: update service segment operation status
- status.setStatus(RequestsDbConstant.Status.FINISHED);
- status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
- status.setProgress("100");
- status.setStatusDescription("VFC resource deletion finished");
- resourceOperationStatusRepository.save(status);
- LOGGER.info("update segment operaton status for delete -> end");
-
- return deleteRsp;
-
- }
-
- /**
- * instantiate network service <br>
- *
- * @param nsInstanceId The NS instance id
- * @param segInput input parameters for current node from http request
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse instantiateNs(String nsInstanceId, NSResourceInputParameter segInput)
- throws ApplicationException {
- // Call the NFVO or SDNO service to instantiate service
- LOGGER.info("instantiate ns -> begin");
-
- // Step1: Prepare restful parameters and options
- NsInstantiateReq oRequest = new NsInstantiateReq();
- oRequest.setNsInstanceId(nsInstanceId);
- NsParameters nsParameters = segInput.getNsParameters();
- oRequest.setLocationConstraints(nsParameters.getLocationConstraints());
- oRequest.setAdditionalParamForNs(nsParameters.getAdditionalParamForNs());
- String instReq = JsonUtil.marshal(oRequest);
- // Step2: prepare url and
- String url = getUrl(nsInstanceId, CommonConstant.Step.INSTANTIATE);
- String methodType = CommonConstant.MethodType.POST;
-
- RestfulResponse instRsp = restfulUtil.send(url, methodType, instReq);
- ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
- segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
- ValidateUtil.assertObjectNotNull(instRsp);
- if (!HttpCode.isSucess(instRsp.getStatus())) {
- LOGGER.error("update segment operation status : fail to instantiate ns");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(instRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- }
- LOGGER.info("instantiate ns response status is : {}", instRsp.getStatus());
- LOGGER.info("instantiate ns response content is : {}", instRsp.getResponseContent());
- ValidateUtil.assertObjectNotNull(instRsp.getResponseContent());
- @SuppressWarnings("unchecked")
- Map<String, String> rsp = JsonUtil.unMarshal(instRsp.getResponseContent(), Map.class);
- String jobId = rsp.get(CommonConstant.JOB_ID);
- if (ValidateUtil.isStrEmpty(jobId)) {
- LOGGER.error("Invalid jobId from instantiate operation");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(instRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION);
- }
- LOGGER.info("instantiate ns -> end");
- // Step 3: update segment operation job id
- LOGGER.info("update resource operation status job id -> begin");
- status.setJobId(jobId);
- status.setProgress("100");
- status.setStatusDescription("NS initiation completed.");
- resourceOperationStatusRepository.save(status);
- LOGGER.info("update segment operation job id -> end");
-
- return instRsp;
- }
-
- /**
- * terminate network service <br>
- *
- * @param nsOperationKey The operation key for NS resource
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse terminateNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
- // Step1: save segment operation info for delete process
- LOGGER.info("save segment operation for delete process");
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- resourceOperationStatusRepository.save(status);
-
- LOGGER.info("terminate ns -> begin");
- // Step2: prepare url and method type
- String url = getUrl(nsInstanceId, CommonConstant.Step.TERMINATE);
- String methodType = CommonConstant.MethodType.POST;
-
- // Step3: prepare restful parameters and options
- Map<String, String> reqBody = new HashMap<>();
- reqBody.put("nsInstanceId", nsInstanceId);
- reqBody.put("terminationType", "graceful");
- reqBody.put("gracefulTerminationTimeout", "60");
-
- // Step4: Call the NFVO or SDNO service to terminate service
- RestfulResponse terminateRsp = restfulUtil.send(url, methodType, JsonUtil.marshal(reqBody));
- ValidateUtil.assertObjectNotNull(terminateRsp);
- LOGGER.info("terminate ns response status is : {}", terminateRsp.getStatus());
- LOGGER.info("terminate ns response content is : {}", terminateRsp.getResponseContent());
- // Step 3: update segment operation
- if (!HttpCode.isSucess(terminateRsp.getStatus())) {
- LOGGER.error("fail to instantiate ns");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
-
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- }
- @SuppressWarnings("unchecked")
- Map<String, String> rsp = JsonUtil.unMarshal(terminateRsp.getResponseContent(), Map.class);
- String jobId = rsp.get(CommonConstant.JOB_ID);
- if (ValidateUtil.isStrEmpty(jobId)) {
- LOGGER.error("Invalid jobId from terminate operation");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSE_FROM_TERMINATE_OPERATION);
- }
- LOGGER.info("terminate ns -> end");
-
- LOGGER.info("update segment job id -> begin");
- status.setProgress("60");
- status.setStatusDescription("NS is termination completed");
- status.setJobId(jobId);
- resourceOperationStatusRepository.save(status);
- LOGGER.info("update segment job id -> end");
-
- return terminateRsp;
- }
-
- /**
- * get ns progress by job Id <br>
- *
- * @param nsOperationKey The OperationKey for NS resource
- * @param jobId the job id
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse getNsProgress(NsOperationKey nsOperationKey, String jobId) throws ApplicationException {
-
- ValidateUtil.assertObjectNotNull(jobId);
- // Step 1: query the current resource operation status
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- status = resourceOperationStatusRepository.findOne(Example.of(status))
- .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
- // Step 2: start query
- LOGGER.info("query ns status -> begin");
- String url = getUrl(jobId, CommonConstant.Step.QUERY);
- String methodType = CommonConstant.MethodType.GET;
- // prepare restful parameters and options
- RestfulResponse rsp = restfulUtil.send(url, methodType, "");
- ValidateUtil.assertObjectNotNull(rsp);
- LOGGER.info("query ns progress response status is : {}", rsp.getStatus());
- LOGGER.info("query ns progress response content is : {}", rsp.getResponseContent());
- // Step 3:check the response staus
- if (!HttpCode.isSucess(rsp.getStatus())) {
- LOGGER.info("fail to query job status");
- status.setErrorCode(String.valueOf(rsp.getStatus()));
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setStatusDescription(CommonConstant.StatusDesc.QUERY_JOB_STATUS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
- }
- // Step 4: Process Network Service Instantiate Response
- NsProgressStatus nsProgress = JsonUtil.unMarshal(rsp.getResponseContent(), NsProgressStatus.class);
- ResponseDescriptor rspDesc = nsProgress.getResponseDescriptor();
- // Step 5: update segment operation progress
-
- status.setProgress(rspDesc.getProgress());
- status.setStatusDescription(rspDesc.getStatusDescription());
- resourceOperationStatusRepository.save(status);
-
- // Step 6: update segment operation status
- if (RequestsDbConstant.Progress.ONE_HUNDRED.equals(rspDesc.getProgress())
- && RequestsDbConstant.Status.FINISHED.equals(rspDesc.getStatus())) {
- LOGGER.info("job result is succeeded, operType is {}", status.getOperType());
- status.setErrorCode(String.valueOf(rsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.QUERY_JOB_STATUS_FAILED);
-
- if (RequestsDbConstant.OperationType.CREATE.equalsIgnoreCase(status.getOperType())
- || "createInstance".equalsIgnoreCase(status.getOperType())) {
- status.setStatus(RequestsDbConstant.Status.FINISHED);
- }
- resourceOperationStatusRepository.save(status);
- } else if (RequestsDbConstant.Status.ERROR.equals(rspDesc.getStatus())) {
- LOGGER.error("job result is failed, operType is {}", status.getOperType());
- status.setErrorCode(String.valueOf(rsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.QUERY_JOB_STATUS_FAILED);
- status.setStatus(RequestsDbConstant.Status.ERROR);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.JOB_STATUS_ERROR);
- } else {
- LOGGER.error("unexcepted response status");
- }
- LOGGER.info("query ns status -> end");
-
- return rsp;
- }
-
- /**
- * Scale NS instance <br>
- *
- * @param nsInstanceId The NS instance id
- * @param segInput input parameters for current node from http request
- * @return
- * @since ONAP Amsterdam Release
- */
- public RestfulResponse scaleNs(String nsInstanceId, NSResourceInputParameter segInput) throws ApplicationException {
- // Call the NFVO to scale service
- LOGGER.info("scale ns -> begin");
-
- // Step1: Prepare restful parameters and options
- VFCScaleData oRequest = new VFCScaleData();
- oRequest.setNsInstanceId(nsInstanceId);
- NsScaleParameters nsScaleParameters = segInput.getNsScaleParameters();
- oRequest.setScaleType(nsScaleParameters.getScaleType());
- oRequest.setScaleNsData(nsScaleParameters.getScaleNsByStepsData());
- String scaleReq = JsonUtil.marshal(oRequest);
-
- // Step2: prepare url and method type
- String url = getUrl(nsInstanceId, CommonConstant.Step.SCALE);
- String methodType = CommonConstant.MethodType.POST;
- LOGGER.info("scale ns request is {}", scaleReq);
- // Step3: Call NFVO lcm to scale ns
- RestfulResponse scaleRsp = restfulUtil.send(url, methodType, scaleReq);
-
- ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
- segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
- ResourceOperationStatus nsOperInfo = resourceOperationStatusRepository.findOne(Example.of(status))
- .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
- ValidateUtil.assertObjectNotNull(scaleRsp);
- if (!HttpCode.isSucess(scaleRsp.getStatus())) {
- LOGGER.error("update segment operation status : fail to scale ns");
- nsOperInfo.setStatus(RequestsDbConstant.Status.ERROR);
- nsOperInfo.setErrorCode(String.valueOf(scaleRsp.getStatus()));
- nsOperInfo.setStatusDescription(CommonConstant.StatusDesc.SCALE_NS_FAILED);
- resourceOperationStatusRepository.save(nsOperInfo);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_SCALE_NS);
- }
- LOGGER.info("scale ns response status is {}", scaleRsp.getStatus());
- LOGGER.info("scale ns response content is {}", scaleRsp.getResponseContent());
-
- ValidateUtil.assertObjectNotNull(scaleRsp.getResponseContent());
- @SuppressWarnings("unchecked")
- Map<String, String> rsp = JsonUtil.unMarshal(scaleRsp.getResponseContent(), Map.class);
- String jobId = rsp.get(CommonConstant.JOB_ID);
- if (ValidateUtil.isStrEmpty(jobId)) {
- LOGGER.error("Invalid jobId from scale operation");
- nsOperInfo.setStatus(RequestsDbConstant.Status.ERROR);
- nsOperInfo.setErrorCode(String.valueOf(scaleRsp.getStatus()));
- nsOperInfo.setStatusDescription(CommonConstant.StatusDesc.SCALE_NS_FAILED);
- resourceOperationStatusRepository.save(nsOperInfo);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSE_FROM_SCALE_OPERATION);
- }
-
- LOGGER.info("update resource operation status job id -> begin");
- // Step 4: update segment operation job id
- nsOperInfo.setJobId(jobId);
- resourceOperationStatusRepository.save(nsOperInfo);
- LOGGER.info("update segment operation job id -> end");
- LOGGER.info("scale ns -> end");
-
- return scaleRsp;
- }
-
- /**
- * get url for the operation <br>
- *
- * @param variable variable should be put in the url
- * @param step step of the operation (terminate,query,delete)
- * @return
- * @since ONAP Amsterdam Release
- */
- private String getUrl(String variable, String step) {
-
- String url;
- String originalUrl;
- originalUrl = nfvoUrlMap.get(step);
- url = String.format(originalUrl, variable);
- return url;
-
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java
deleted file mode 100644
index 9033becf8a..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import java.time.LocalDateTime;
-import java.util.*;
-import org.onap.so.adapters.vfc.constant.CommonConstant;
-import org.onap.so.adapters.vfc.constant.CommonConstant.Step;
-import org.onap.so.adapters.vfc.constant.DriverExceptionID;
-import org.onap.so.adapters.vfc.constant.HttpCode;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.onap.so.adapters.vfc.model.*;
-import org.onap.so.adapters.vfc.util.JsonUtil;
-import org.onap.so.adapters.vfc.util.RestfulUtil;
-import org.onap.so.adapters.vfc.util.ValidateUtil;
-import org.onap.so.db.request.beans.InstanceNfvoMapping;
-import org.onap.so.db.request.beans.OperationStatus;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
-import org.onap.so.db.request.data.repository.OperationStatusRepository;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.onap.so.requestsdb.RequestsDbConstant;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.domain.Example;
-import org.springframework.stereotype.Component;
-
-/**
- * VF-C Manager <br>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-08-28
- */
-@Component
-@Primary
-public class VfcManagerSol005 {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(VfcManagerSol005.class);
-
- /**
- * nfvo url map
- */
- private Map<String, String> nfvoUrlMap;
-
- @Autowired
- private ResourceOperationStatusRepository resourceOperationStatusRepository;
-
- @Autowired
- private RestfulUtil restfulUtil;
-
- @Autowired
- private OperationStatusRepository operationStatusRepository;
-
- @Autowired
- private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
-
- private InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
-
- public VfcManagerSol005() {
- nfvoUrlMap = new HashMap<>();
- nfvoUrlMap.put(Step.CREATE, CommonConstant.SOL005_NFVO_CREATE_URL);
- nfvoUrlMap.put(Step.INSTANTIATE, CommonConstant.SOL005_NFVO_INSTANTIATE_URL);
- nfvoUrlMap.put(Step.TERMINATE, CommonConstant.SOL005_NFVO_TERMINATE_URL);
- nfvoUrlMap.put(Step.DELETE, CommonConstant.SOL005_NFVO_DELETE_URL);
- nfvoUrlMap.put(Step.QUERY, CommonConstant.SOL005_NFVO_QUERY_URL);
- nfvoUrlMap.put(Step.SCALE, CommonConstant.NFVO_SCALE_URL);
- }
-
- /**
- * create network service <br>
- *
- * @param segInput input parameters for current node from http request
- * @return
- * @since ONAP Dubilin Release
- */
- public RestfulResponse createNs(NSResourceInputParameter segInput) throws ApplicationException {
-
- Map<String, String> nfvoDetails;
- // Step1: get service template by node type
- String nsdId = segInput.getNsServiceModelUUID();
- // nsdId for NFVO is "id" in the response, while for SDNO is "servcice template id"
- LOGGER.info("serviceTemplateId is {}, id is {}", nsdId, nsdId);
-
-
- LOGGER.info("SOL005 create ns -> begin");
- // Step2: Prepare url and method type
- String url = getUrl(null, CommonConstant.Step.CREATE);
- String methodType = CommonConstant.MethodType.POST;
-
- // Step3: Prepare restful parameters and options
- CreateNsRequest createNsRequest = new CreateNsRequest();
- createNsRequest.setNsDescription(segInput.getNsServiceDescription());
- createNsRequest.setNsdId(segInput.getNsServiceModelUUID());
- createNsRequest.setNsName(segInput.getNsServiceName());
-
- String createReq = JsonUtil.marshal(createNsRequest);
- RestfulResponse aaiRestfulResponse = null;
- NsParameters nsParameters = segInput.getNsParameters();
- if (nsParameters.getAdditionalParamForNs().containsKey("orchestrator")) {
- if (nsParameters.getAdditionalParamForNs().get("orchestrator") != null) {
- String nfvo = nsParameters.getAdditionalParamForNs().get("nfvo").toString();
- aaiRestfulResponse = restfulUtil.getNfvoFromAAI(nfvo);
- nfvoDetails = JsonUtil.unMarshal(aaiRestfulResponse.getResponseContent(), Map.class);
- url = nfvoDetails.get("url") + nfvoDetails.get("api-root") + url;
-
- }
- } else {
- LOGGER.error("Nfvo not present in AAI");
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_CREATE_NS);
- }
-
-
- // Prepare request header for createNs request.
- Map<String, String> requestHeader = new HashMap<>();
- requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
- requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
-
- // Step4: Call NFVO or SDNO lcm to create ns
- LOGGER.info("Request Payload for CreateNs: " + createReq);
-
- RestfulResponse createRsp = restfulUtil.send(url, methodType, createReq, requestHeader);
- ValidateUtil.assertObjectNotNull(createRsp);
- LOGGER.info("create ns response status is : {}", createRsp.getStatus());
- LOGGER.info("create ns response content is : {}", createRsp.getResponseContent());
-
- // Step 5: save resource operation information
- ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
- segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- status = resourceOperationStatusRepository.save(status);
- if (!HttpCode.isSucess(createRsp.getStatus())) {
- LOGGER.error("update segment operation status : fail to create ns");
- status.setProgress("40");
- status.setStatusDescription("NS not created");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(createRsp.getStatus()));
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_CREATE_NS);
- }
- // TODO: Capture all the content of the response. Currently fetching ID value alone.
- // Should be converted into the NsInstance.class
- @SuppressWarnings("unchecked")
- Map<String, String> rsp = JsonUtil.unMarshal(createRsp.getResponseContent(), Map.class);
- String nsInstanceId = rsp.get(CommonConstant.SOL005_NS_INSTANCE_ID);
- if (ValidateUtil.isStrEmpty(nsInstanceId)) {
- LOGGER.error("Invalid instanceId from create operation");
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSEE_FROM_CREATE_OPERATION);
- }
-
- nfvoDetails = JsonUtil.unMarshal(aaiRestfulResponse.getResponseContent(), Map.class);
- instanceNfvoMapping.setInstanceId(nsInstanceId);
- instanceNfvoMapping.setPassword(nfvoDetails.get("password"));
- instanceNfvoMapping.setUsername(nfvoDetails.get("userName"));
- instanceNfvoMapping.setNfvoName(nfvoDetails.get("nfvoId"));
- instanceNfvoMapping.setEndpoint(nfvoDetails.get("url"));
- instanceNfvoMapping.setApiRoot(nfvoDetails.get("api-root"));
- instanceNfvoMappingRepository.save(instanceNfvoMapping);
- LOGGER.info("create ns -> end");
- LOGGER.info("save segment and operaton info -> begin");
- // Step 6: add relation between service and NS
- AaiUtil.addRelation(segInput.getNsOperationKey().getGlobalSubscriberId(),
- segInput.getNsOperationKey().getServiceType(), segInput.getNsOperationKey().getServiceId(),
- nsInstanceId);
- LOGGER.info("save segment and operation info -> end");
- return createRsp;
- }
-
- /**
- * delete network service <br>
- *
- * @param nsOperationKey The operation key of the NS resource
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Dublin Release
- */
- public RestfulResponse deleteNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
- LOGGER.info("SOL005 delete ns -> begin");
- // Step1: prepare url and methodType
- String url = getUrl(nsInstanceId, CommonConstant.Step.DELETE);
- String methodType = CommonConstant.MethodType.DELETE;
-
- // Step2: prepare restful parameters and options
- RestfulResponse deleteRsp = restfulUtil.send(url, methodType, "");
- ValidateUtil.assertObjectNotNull(deleteRsp);
- LOGGER.info("delete ns response status is : {}", deleteRsp.getStatus());
- LOGGER.info("delete ns response content is : {}", deleteRsp.getResponseContent());
- LOGGER.info("delete ns -> end");
-
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- if (!HttpCode.isSucess(deleteRsp.getStatus())) {
- LOGGER.error("fail to delete ns");
-
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_DELETE_NS);
- }
-
- // Step3: remove relation info between service and ns
- AaiUtil.removeRelation(nsOperationKey.getGlobalSubscriberId(), nsOperationKey.getServiceType(),
- nsOperationKey.getServiceId(), nsInstanceId);
- LOGGER.info("delete segment information -> end");
-
- // Step4: update service segment operation status
- status.setStatus(RequestsDbConstant.Status.FINISHED);
- status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
- status.setProgress("100");
- status.setStatusDescription("VFC resource deletion finished");
- resourceOperationStatusRepository.save(status);
- LOGGER.info("update segment operaton status for delete -> end");
-
- return deleteRsp;
-
- }
-
- /**
- * instantiate network service <br>
- *
- * @param nsInstanceId The NS instance id
- * @param segInput input parameters for current node from http request
- * @return
- * @since ONAP Dublin Release
- */
- public RestfulResponse instantiateNs(String nsInstanceId, NSResourceInputParameter segInput)
- throws ApplicationException {
- // Call the NFVO or SDNO service to instantiate service
- LOGGER.info("SOL005 instantiate ns -> begin");
-
- // Step1: Prepare restful parameters and options
- InstantiateNsRequest instantiateNsRequest = new InstantiateNsRequest();
-
- NsInstantiateReq oRequest = new NsInstantiateReq();
- oRequest.setNsInstanceId(nsInstanceId);
- NsParameters nsParameters = segInput.getNsParameters();
-
- ArrayList<VnfLocationConstraint> vnfLocationConstraints = new ArrayList<VnfLocationConstraint>();
- for (LocationConstraint locationConstraint : nsParameters.getLocationConstraints()) {
- VnfLocationConstraint vnfLocationConstraint = new VnfLocationConstraint();
- vnfLocationConstraint.setVnfProfileId(locationConstraint.getVnfProfileId());
- vnfLocationConstraint.setLocationConstraints(null);
- vnfLocationConstraints.add(vnfLocationConstraint);
-
- }
- instantiateNsRequest.setAditionalParamsForNs(nsParameters.getAdditionalParamForNs());
- // Setting FlavourID which is a mandatory paramater to default
- // as UUI is not sending this parameter to so
- instantiateNsRequest.setNsFlavourId("default");
- String instReq = JsonUtil.marshal(instantiateNsRequest);
- LOGGER.info("Request Payload for InstantiateNs: " + instReq);
- // Step2: prepare url and
- String url = getUrl(nsInstanceId, CommonConstant.Step.INSTANTIATE);
- String methodType = CommonConstant.MethodType.POST;
- instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
-
- if (instanceNfvoMapping != null) {
-
- url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
-
- } else {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
-
- }
- // Step3: prepare restful parameters and options
- Map<String, String> reqBody = new HashMap<>();
- reqBody.put("terminationTime", LocalDateTime.now().toString());
- RestfulResponse instRsp = restfulUtil.send(url, methodType, instReq);
- ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
- segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
- ValidateUtil.assertObjectNotNull(instRsp);
- if (!HttpCode.isSucess(instRsp.getStatus())) {
- LOGGER.error("update segment operation status : fail to instantiate ns");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(instRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- }
- LOGGER.info("instantiate ns response status is : {}", instRsp.getStatus());
- LOGGER.info("response payload is {}", instRsp.getResponseContent());
- String jobId = null;
- if (instRsp.getStatus() == 202) {
- String jobUri = instRsp.getRespHeaderStr(CommonConstant.JOB_URI);
- LOGGER.info("JOB URI" + jobUri);
- jobId = jobUri.split("/")[4];
- if (ValidateUtil.isStrEmpty(jobId)) {
- LOGGER.error("Invalid jobId from instantiate operation");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(instRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION);
- }
-
- } else if (instRsp.getStatus() > 400 && instRsp.getStatus() < 600) {
- LOGGER.error("ERROR while executing instantiateNs request");
- ProblemDetails problemDetails = JsonUtil.unMarshal(instRsp.getResponseContent(), ProblemDetails.class);
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(instRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED + problemDetails.getDetail());
- resourceOperationStatusRepository.save(status);
- if (instRsp.getStatus() == 406) {
- throw new ApplicationException(HttpCode.NOT_ACCEPTABLE, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- } else if (instRsp.getStatus() == 400) {
- throw new ApplicationException(HttpCode.BAD_REQUEST, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- } else if (instRsp.getStatus() == 404) {
- throw new ApplicationException(HttpCode.NOT_FOUND, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- } else if (instRsp.getStatus() == 409) {
- LOGGER.error("The operation cannot be executed currently,\n"
- + "due to a conflict with the state of the resource");
- throw new ApplicationException(HttpCode.RESPOND_CONFLICT, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- } else if (instRsp.getStatus() == 500) {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- } else {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
- }
-
- }
- LOGGER.info("Job id is " + jobId);
- LOGGER.info("Nfvo Details" + instanceNfvoMapping.toString());
- LOGGER.info("instantiate ns -> end");
- // Step 3: update segment operation job id
- LOGGER.info("update resource operation status job id -> begin");
- status.setJobId(jobId);
- status.setProgress("100");
- status.setStatusDescription("NS initiation completed.");
- resourceOperationStatusRepository.save(status);
- instanceNfvoMapping.setJobId(jobId);
- instanceNfvoMappingRepository.save(instanceNfvoMapping);
- LOGGER.info("update segment operation job id -> end" + instanceNfvoMapping.toString());
- return instRsp;
- }
-
- /**
- * terminate network service <br>
- *
- * @param nsOperationKey The operation key for NS resource
- * @param nsInstanceId The NS instance id
- * @return
- * @since ONAP Dublin Release
- */
- public RestfulResponse terminateNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
- // Step1: save segment operation info for delete process
- LOGGER.info("save segment operation for delete process");
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- resourceOperationStatusRepository.save(status);
-
- LOGGER.info("SOL005 terminate ns -> begin");
- // Step2: prepare url and method type
- String url = getUrl(nsInstanceId, CommonConstant.Step.TERMINATE);
- String methodType = CommonConstant.MethodType.POST;
-
- instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
-
- if (instanceNfvoMapping != null) {
-
- url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
-
- } else {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- }
- // Step3: prepare restful parameters and options
- Map<String, String> reqBody = new HashMap<>();
- reqBody.put("terminationTime", LocalDateTime.now().toString());
-
- // Step4: Call the NFVO or SDNO service to terminate service
- LOGGER.info("request body for terminate NS" + JsonUtil.marshal(reqBody));
- RestfulResponse terminateRsp = restfulUtil.send(url, methodType, JsonUtil.marshal(reqBody));
- ValidateUtil.assertObjectNotNull(terminateRsp);
- LOGGER.info("terminate ns response status is : {}", terminateRsp.getStatus());
- LOGGER.info("terminate ns response content is : {}", terminateRsp.getResponseContent());
- // Step 3: update segment operation
- if (!HttpCode.isSucess(terminateRsp.getStatus())) {
- LOGGER.error("fail to terminate ns");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
-
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- }
- // @SuppressWarnings("unchecked")
- String jobId = null;
- Map<String, String> rsp = new HashMap<>();
- if (terminateRsp.getStatus() == 202) {
- String jobUri = terminateRsp.getRespHeaderStr(CommonConstant.JOB_URI);
- jobId = jobUri.split("/")[4];
- jobId.split("/");
- if (ValidateUtil.isStrEmpty(jobId)) {
- LOGGER.error("Invalid jobId from instantiate operation");
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
- DriverExceptionID.INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION);
- }
- rsp.put(CommonConstant.JOB_ID, jobId);
- LOGGER.info("terminate ns -> end");
- LOGGER.info("update segment job id -> begin");
- status.setProgress("60");
- status.setStatusDescription("NS is termination completed");
- status.setJobId(jobId);
- resourceOperationStatusRepository.save(status);
- LOGGER.info("update segment job id -> end");
- } else if (terminateRsp.getStatus() > 400 && terminateRsp.getStatus() < 600) {
- LOGGER.error("ERROR while executing instantiateNs request");
- ProblemDetails problemDetails = JsonUtil.unMarshal(terminateRsp.getResponseContent(), ProblemDetails.class);
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
- status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED + problemDetails.getDetail());
- resourceOperationStatusRepository.save(status);
- if (terminateRsp.getStatus() == 406) {
- throw new ApplicationException(HttpCode.NOT_ACCEPTABLE, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- } else if (terminateRsp.getStatus() == 400) {
- throw new ApplicationException(HttpCode.BAD_REQUEST, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- } else if (terminateRsp.getStatus() == 404) {
- throw new ApplicationException(HttpCode.NOT_FOUND, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- } else if (terminateRsp.getStatus() == 409) {
- LOGGER.error("The operation cannot be executed currently,\n"
- + "due to a conflict with the state of the resource");
- throw new ApplicationException(HttpCode.RESPOND_CONFLICT, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- } else if (terminateRsp.getStatus() == 500) {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- } else {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
- }
-
- }
- instanceNfvoMapping.setJobId(jobId);
- instanceNfvoMappingRepository.save(instanceNfvoMapping);
- terminateRsp.setResponseContent(rsp.toString());
- return terminateRsp;
- }
-
- /**
- * get ns progress by job Id <br>
- *
- * @param nsOperationKey The OperationKey for NS resource
- * @param jobId the job id
- * @return
- * @since ONAP Dublin Release
- */
- public RestfulResponse getNsProgress(NsOperationKey nsOperationKey, String jobId) throws ApplicationException {
-
- ValidateUtil.assertObjectNotNull(jobId);
- // Step 1: query the current resource operation status
- ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
- nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
- // status = resourceOperationStatusRepository.findOne(Example.of(status))
- // .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
-
- // Get NFVO details
- instanceNfvoMapping = instanceNfvoMappingRepository.findOneByJobId(jobId);
-
- // Step 2: start query
- LOGGER.info("SOL005 query ns status -> begin");
- String url = getUrl(jobId, CommonConstant.Step.QUERY);
- String methodType = CommonConstant.MethodType.GET;
- if (instanceNfvoMapping != null) {
-
- url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
-
- } else {
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
- }
-
- // prepare restful parameters and options
- RestfulResponse rsp = restfulUtil.send(url, methodType, "");
- ValidateUtil.assertObjectNotNull(rsp);
- LOGGER.info("query ns progress response status is : {}", rsp.getStatus());
- LOGGER.info("query ns progress response content is : {}", rsp.getResponseContent());
- // Step 3:check the response staus
- if (!HttpCode.isSucess(rsp.getStatus())) {
- LOGGER.info("fail to query job status");
- ProblemDetails problemDetails = JsonUtil.unMarshal(rsp.getResponseContent(), ProblemDetails.class);
- status.setErrorCode(String.valueOf(rsp.getStatus()));
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setStatusDescription(CommonConstant.StatusDesc.QUERY_JOB_STATUS_FAILED + problemDetails.getDetail());
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
- }
- // Step 4: Process Network Service Instantiate Response
- NsLcmOpOcc nsProgress = JsonUtil.unMarshal(rsp.getResponseContent(), NsLcmOpOcc.class);
- if (CommonConstant.operationState.FAILED.equals(nsProgress.getOperationState())) {
- LOGGER.info("NS instantiate fails");
- status.setErrorCode(String.valueOf(rsp.getStatus()));
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setStatusDescription(
- CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED + nsProgress.getError().getDetail());
- resourceOperationStatusRepository.save(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
- }
- // Step 5: update segment operation progress
-
- if (nsProgress.getOperationState().equals(CommonConstant.operationState.PROCESSING)) {
- status.setProgress("40");
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- status.setStatusDescription("NS operation is in progress");
- resourceOperationStatusRepository.save(status);
- updateOperationStatusBasedOnResourceStatus(status);
- } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.PARTIALLY_COMPLETED)) {
- status.setProgress("60");
- status.setStatus(RequestsDbConstant.Status.PROCESSING);
- status.setStatusDescription("NS operation is partially completed");
- resourceOperationStatusRepository.save(status);
- } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.COMPLETED)) {
- status.setStatus(RequestsDbConstant.Status.FINISHED);
- status.setProgress("100");
- status.setStatusDescription("NS operation is Completed");
- resourceOperationStatusRepository.save(status);
- updateOperationStatusBasedOnResourceStatus(status);
-
- } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.FAILED)
- || nsProgress.getOperationState().equals(CommonConstant.operationState.FAILED_TEMP)) {
- status.setStatus(RequestsDbConstant.Status.ERROR);
- status.setProgress("0");
- status.setStatusDescription("NS operation Failed");
- resourceOperationStatusRepository.save(status);
- updateOperationStatusBasedOnResourceStatus(status);
- throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.JOB_STATUS_ERROR);
- } else {
- LOGGER.error("unexcepted response status");
-
- }
- return rsp;
- }
-
- /**
- * get url for the operation <br>
- *
- * @param variable variable should be put in the url
- * @param step step of the operation (terminate,query,delete)
- * @return
- * @since ONAP Dublin Release
- */
- private String getUrl(String variable, String step) {
-
- String url;
- String originalUrl;
- originalUrl = nfvoUrlMap.get(step);
- url = String.format(originalUrl, variable);
- return url;
-
- }
-
- private void updateOperationStatusBasedOnResourceStatus(ResourceOperationStatus operStatus) {
- String serviceId = operStatus.getServiceId();
- String operationId = operStatus.getOperationId();
-
- LOGGER.debug("Request database - update Operation Status Based On Resource Operation Status with service Id: "
- + "{}, operationId: {}", serviceId, operationId);
-
- List<ResourceOperationStatus> lstResourceStatus =
- resourceOperationStatusRepository.findByServiceIdAndOperationId(serviceId, operationId);
- if (lstResourceStatus == null) {
- LOGGER.error("Unable to retrieve resourceOperStatus Object by ServiceId: {} operationId: {}", serviceId,
- operationId);
- return;
- }
-
- // count the total progress
- int resourceCount = lstResourceStatus.size();
- int progress = 0;
- boolean isFinished = true;
- for (ResourceOperationStatus lstResourceStatu : lstResourceStatus) {
- progress = progress + Integer.valueOf(lstResourceStatu.getProgress()) / resourceCount;
- if (RequestsDbConstant.Status.PROCESSING.equals(lstResourceStatu.getStatus())) {
- isFinished = false;
- }
- }
-
- OperationStatus serviceOperStatus =
- operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
- if (serviceOperStatus == null) {
- String error = "Entity not found. Unable to retrieve OperationStatus Object ServiceId: " + serviceId
- + " operationId: " + operationId;
- LOGGER.error(error);
-
- serviceOperStatus = new OperationStatus();
- serviceOperStatus.setOperationId(operationId);
- serviceOperStatus.setServiceId(serviceId);
- }
-
- progress = progress > 100 ? 100 : progress;
- serviceOperStatus.setProgress(String.valueOf(progress));
- serviceOperStatus.setOperationContent(operStatus.getStatusDescription());
- // if current resource failed. service failed.
- if (RequestsDbConstant.Status.ERROR.equals(operStatus.getStatus())) {
- serviceOperStatus.setResult(RequestsDbConstant.Status.ERROR);
- serviceOperStatus.setReason(operStatus.getStatusDescription());
- } else if (isFinished) {
- // if finished
- serviceOperStatus.setResult(RequestsDbConstant.Status.FINISHED);
- serviceOperStatus.setProgress(RequestsDbConstant.Progress.ONE_HUNDRED);
- }
-
- operationStatusRepository.save(serviceOperStatus);
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java
deleted file mode 100644
index 04109bd89d..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018 IBM.
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.util;
-
-import java.io.IOException;
-import org.onap.so.logger.LoggingAnchor;
-import org.onap.so.adapters.vfc.constant.HttpCode;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.onap.logging.filter.base.ErrorCode;
-import org.onap.so.logger.MessageEnum;
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Interface for json analyzing.<br/>
- * <p>
- * </p>
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-public class JsonUtil {
-
- /**
- * Log service
- */
- private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
-
- /**
- * Mapper.
- */
- private static final ObjectMapper MAPPER = new ObjectMapper();
- private static final String UNMARSHAL_FAIL_MSG = "fail to unMarshal json";
- static {
- MAPPER.setConfig(MAPPER.getDeserializationConfig().without(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES));
- MAPPER.setSerializationInclusion(Include.NON_NULL);
- }
-
- /**
- * Constructor<br/>
- * <p>
- * </p>
- *
- * @since ONAP Amsterdam Release 2017-9-6
- */
- private JsonUtil() {
-
- }
-
- /**
- * Parse the string in form of json.<br/>
- *
- * @param jsonstr json string.
- * @param type that convert json string to
- * @return model object
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static <T> T unMarshal(String jsonstr, Class<T> type) throws ApplicationException {
- try {
- return MAPPER.readValue(jsonstr, type);
- } catch (IOException e) {
- logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(),
- ErrorCode.BusinessProcessError.getValue(), UNMARSHAL_FAIL_MSG, e);
- throw new ApplicationException(HttpCode.BAD_REQUEST, UNMARSHAL_FAIL_MSG);
- }
- }
-
- /**
- * Parse the string in form of json.<br/>
- *
- * @param jsonstr json string.
- * @param type that convert json string to
- * @return model object
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static <T> T unMarshal(String jsonstr, TypeReference<T> type) throws ApplicationException {
- try {
- return MAPPER.readValue(jsonstr, type);
- } catch (IOException e) {
- logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(),
- ErrorCode.BusinessProcessError.getValue(), UNMARSHAL_FAIL_MSG, e);
- throw new ApplicationException(HttpCode.BAD_REQUEST, UNMARSHAL_FAIL_MSG);
- }
- }
-
- /**
- * Convert object to json string.<br/>
- *
- * @param srcObj data object
- * @return json string
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static String marshal(Object srcObj) throws ApplicationException {
- try {
- return MAPPER.writeValueAsString(srcObj);
- } catch (IOException e) {
- logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(),
- ErrorCode.BusinessProcessError.getValue(), "fail to marshal json", e);
- throw new ApplicationException(HttpCode.BAD_REQUEST, "srcObj marshal failed!");
- }
- }
-
- /**
- * Get mapper.<br/>
- *
- * @return mapper
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static ObjectMapper getMapper() {
- return MAPPER;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java
deleted file mode 100644
index 54a2a98a00..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Modifications Copyright (C) 2018.
- * Modifications Copyright (c) 2019 Samsung
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.util;
-
-import java.net.HttpURLConnection;
-import java.net.SocketTimeoutException;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.Map;
-import javax.ws.rs.core.UriBuilder;
-import org.onap.so.logger.LoggingAnchor;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.conn.ConnectTimeoutException;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.onap.logging.filter.base.ErrorCode;
-import org.onap.so.logger.MessageEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Component;
-
-/**
- * <br>
- * <p>
- * </p>
- * utility to invoke restclient
- *
- * @author
- * @version ONAP Amsterdam Release 2017-9-6
- */
-@Component
-public class RestfulUtil {
-
- /**
- * Log service
- */
- private static final Logger logger = LoggerFactory.getLogger(RestfulUtil.class);
-
- private static final int DEFAULT_TIME_OUT = 60000;
-
- private static final String ONAP_IP = "ONAP_IP";
-
- private static final String DEFAULT_MSB_IP = "127.0.0.1";
-
- private static final Integer DEFAULT_MSB_PORT = 80;
-
- private static final String VFC_ADAPTER = "VFC Adapter";
-
- @Autowired
- private Environment env;
-
- @Autowired
- private HttpClient client;
-
- public String getMsbHost() {
- // MSB_IP will be set as ONAP_IP environment parameter in install flow.
- String msbIp = System.getenv().get(ONAP_IP);
- // if ONAP IP is not set. get it from config file.
- if (null == msbIp || msbIp.isEmpty()) {
- msbIp = env.getProperty("mso.msb-ip", DEFAULT_MSB_IP);
- }
- Integer msbPort = env.getProperty("mso.msb-port", Integer.class, DEFAULT_MSB_PORT);
-
- String msbEndpoint = UriBuilder.fromPath("").host(msbIp).port(msbPort).scheme("http").build().toString();
- logger.debug("msbEndpoint in vfc adapter: {}", msbEndpoint);
-
- return msbEndpoint;
- }
-
- private RestfulUtil() {
-
- }
-
-
- public RestfulResponse send(String msbUrl, String methodType, String content, Map<String, String> requestHeader) {
- // String msbUrl = getMsbHost() + url;
- logger.debug("Begin to sent message " + methodType + ": " + msbUrl);
-
- HttpRequestBase method = null;
- HttpResponse httpResponse = null;
-
- try {
- int timeout = DEFAULT_TIME_OUT;
-
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
- .setConnectionRequestTimeout(timeout).build();
-
- HttpClient client = HttpClientBuilder.create().build();
-
- if ("POST".equalsIgnoreCase(methodType)) {
- HttpPost httpPost = new HttpPost(msbUrl);
- httpPost.setConfig(requestConfig);
- for (String key : requestHeader.keySet()) {
- httpPost.setHeader(key, requestHeader.get(key));
- }
- httpPost.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
- method = httpPost;
- } else if ("PUT".equalsIgnoreCase(methodType)) {
- HttpPut httpPut = new HttpPut(msbUrl);
- httpPut.setConfig(requestConfig);
- httpPut.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
- method = httpPut;
- } else if ("GET".equalsIgnoreCase(methodType)) {
- HttpGet httpGet = new HttpGet(msbUrl);
- httpGet.setConfig(requestConfig);
- method = httpGet;
- } else if ("DELETE".equalsIgnoreCase(methodType)) {
- HttpDelete httpDelete = new HttpDelete(msbUrl);
- httpDelete.setConfig(requestConfig);
- method = httpDelete;
- }
-
- // now VFC have no auth
- // String userCredentials =
- // SDNCAdapterProperties.getEncryptedProperty(Constants.SDNC_AUTH_PROP,
- // Constants.DEFAULT_SDNC_AUTH, Constants.ENCRYPTION_KEY);
- // String authorization = "Basic " +
- // DatatypeConverter.printBase64Binary(userCredentials.getBytes());
- // method.setHeader("Authorization", authorization);
-
- httpResponse = client.execute(method);
- Map<String, String> responseHeader = new HashMap<>();
- String responseContent = null;
- if (httpResponse.getEntity() != null) {
- responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
- Header[] httpResponseAllHeaders = httpResponse.getAllHeaders();
- for (Header header : httpResponseAllHeaders) {
- responseHeader.put(header.getName(), header.getValue());
-
- }
- }
-
- int statusCode = httpResponse.getStatusLine().getStatusCode();
- String statusMessage = httpResponse.getStatusLine().getReasonPhrase();
-
- logger.debug("VFC Response: {} {}", statusCode,
- statusMessage + (responseContent == null ? "" : System.lineSeparator() + responseContent));
-
- if (httpResponse.getStatusLine().getStatusCode() >= 300) {
- String errMsg = "VFC returned " + statusCode + " " + statusMessage;
- logError(errMsg);
- return createResponse(statusCode, errMsg);
- }
-
- httpResponse = null;
-
- if (null != method) {
- method.reset();
- } else {
- logger.debug("method is NULL:");
- }
-
- method = null;
- return createResponse(statusCode, responseContent, responseHeader);
-
- } catch (SocketTimeoutException | ConnectTimeoutException e) {
- String errMsg = "Request to VFC timed out";
- logError(errMsg, e);
- return createResponse(HttpURLConnection.HTTP_CLIENT_TIMEOUT, errMsg);
-
- } catch (Exception e) {
- String errMsg = "Error processing request to VFC";
- logError(errMsg, e);
- return createResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, errMsg);
-
- } finally {
- if (httpResponse != null) {
- try {
- EntityUtils.consume(httpResponse.getEntity());
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
-
- if (method != null) {
- try {
- method.reset();
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
- }
- }
-
- public RestfulResponse send(String msbUrl, String methodType, String content) {
- if (!msbUrl.contains("http")) {
- msbUrl = getMsbHost() + msbUrl;
- }
- // String msbUrl = getMsbHost() + url;
- logger.debug("Begin to sent message " + methodType + ": " + msbUrl);
-
- HttpRequestBase method = null;
- HttpResponse httpResponse = null;
-
- try {
- int timeout = DEFAULT_TIME_OUT;
-
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
- .setConnectionRequestTimeout(timeout).build();
-
- if ("POST".equalsIgnoreCase(methodType)) {
- HttpPost httpPost = new HttpPost(msbUrl);
- httpPost.setConfig(requestConfig);
- httpPost.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
- method = httpPost;
- } else if ("PUT".equalsIgnoreCase(methodType)) {
- HttpPut httpPut = new HttpPut(msbUrl);
- httpPut.setConfig(requestConfig);
- httpPut.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
- method = httpPut;
- } else if ("GET".equalsIgnoreCase(methodType)) {
- HttpGet httpGet = new HttpGet(msbUrl);
- httpGet.setConfig(requestConfig);
- method = httpGet;
- } else if ("DELETE".equalsIgnoreCase(methodType)) {
- HttpDelete httpDelete = new HttpDelete(msbUrl);
- httpDelete.setConfig(requestConfig);
- method = httpDelete;
- }
-
- // now VFC have no auth
- // String userCredentials =
- // SDNCAdapterProperties.getEncryptedProperty(Constants.SDNC_AUTH_PROP,
- // Constants.DEFAULT_SDNC_AUTH, Constants.ENCRYPTION_KEY);
- // String authorization = "Basic " +
- // DatatypeConverter.printBase64Binary(userCredentials.getBytes());
- // method.setHeader("Authorization", authorization);
-
- httpResponse = client.execute(method);
- Map<String, String> responseHeader = new HashMap<>();
- String responseContent = null;
- if (httpResponse.getEntity() != null) {
- responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
- Header[] httpResponseAllHeaders = httpResponse.getAllHeaders();
- for (Header header : httpResponseAllHeaders) {
- responseHeader.put(header.getName(), header.getValue());
-
- }
- }
-
- int statusCode = httpResponse.getStatusLine().getStatusCode();
- String statusMessage = httpResponse.getStatusLine().getReasonPhrase();
-
- logger.debug("VFC Response: " + statusCode + " " + statusMessage
- + (responseContent == null ? "" : System.lineSeparator() + responseContent));
-
- if (httpResponse.getStatusLine().getStatusCode() >= 300) {
- String errMsg = "VFC returned " + statusCode + " " + statusMessage;
- logError(errMsg);
- return createResponse(statusCode, errMsg);
- }
-
- httpResponse = null;
-
- if (null != method) {
- method.reset();
- } else {
- logger.debug("method is NULL:");
- }
-
- method = null;
- return createResponse(statusCode, responseContent, responseHeader);
-
- } catch (SocketTimeoutException | ConnectTimeoutException e) {
- String errMsg = "Request to VFC timed out";
- logError(errMsg, e);
- return createResponse(HttpURLConnection.HTTP_CLIENT_TIMEOUT, errMsg);
-
- } catch (Exception e) {
- String errMsg = "Error processing request to VFC";
- logError(errMsg, e);
- return createResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, errMsg);
-
- } finally {
- if (httpResponse != null) {
- try {
- EntityUtils.consume(httpResponse.getEntity());
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
-
- if (method != null) {
- try {
- method.reset();
- } catch (Exception e) {
- logger.debug("Exception :", e);
- }
- }
- }
- }
-
- public RestfulResponse getNfvoFromAAI(String nfvo) {
- HttpRequestBase method = null;
- HttpResponse httpResponse = null;
- String endPoint = getMsbHost() + "/api/aai-esr-server/v1/nfvos/" + nfvo;
- logger.info("Endpoint URL" + endPoint);
- RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(DEFAULT_TIME_OUT)
- .setConnectTimeout(DEFAULT_TIME_OUT).setConnectionRequestTimeout(DEFAULT_TIME_OUT).build();
- HttpClient client = HttpClientBuilder.create().build();
- HttpGet httpGet = new HttpGet(endPoint);
- httpGet.setConfig(requestConfig);
- String encoding = Base64.getEncoder().encodeToString(("AAI:AAI").getBytes());
- httpGet.setHeader("Authorization", "Basic " + encoding);
- method = httpGet;
- String responseContent = null;
- Map<String, String> responseHeader = null;
- try {
- httpResponse = client.execute(method);
- if (httpResponse.getEntity() != null) {
- responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
- }
-
- int statusCode = httpResponse.getStatusLine().getStatusCode();
- String statusMessage = httpResponse.getStatusLine().getReasonPhrase();
-
- logger.debug("AAI Response: " + statusCode + " " + statusMessage
- + (responseContent == null ? "" : System.lineSeparator() + responseContent));
-
- if (httpResponse.getStatusLine().getStatusCode() >= 300) {
- String errMsg = "AAI returned " + statusCode + " " + statusMessage;
- logError(errMsg);
- return createResponse(statusCode, errMsg);
- }
- } catch (Exception e) {
- String errMsg = "Error processing request to AAI";
- logError(errMsg, e);
- return createResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, errMsg);
- }
- return createResponse(200, responseContent);
- }
-
- private static void logError(String errMsg, Throwable t) {
- logger.error(LoggingAnchor.FOUR, MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER,
- ErrorCode.AvailabilityError.getValue(), errMsg, t);
- }
-
- private static void logError(String errMsg) {
- logger.error(LoggingAnchor.FOUR, MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER,
- ErrorCode.AvailabilityError.toString(), errMsg);
- }
-
- private static RestfulResponse createResponse(int statusCode, String content) {
- RestfulResponse rsp = new RestfulResponse();
- rsp.setStatus(statusCode);
- rsp.setResponseContent(content);
- return rsp;
- }
-
- private static RestfulResponse createResponse(int statusCode, String content, Map<String, String> responseHeader) {
- RestfulResponse rsp = new RestfulResponse();
- rsp.setStatus(statusCode);
- rsp.setRespHeaderMap(responseHeader);
- rsp.setResponseContent(content);
- return rsp;
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/ValidateUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/ValidateUtil.java
deleted file mode 100644
index f56f5af05b..0000000000
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/ValidateUtil.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.util;
-
-import org.onap.so.adapters.vfc.constant.HttpCode;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ValidateUtil {
-
- /**
- * Log server.
- */
- private static final Logger LOGGER = LoggerFactory.getLogger(ValidateUtil.class);
-
- /**
- * Constructor<br/>
- * <p>
- * </p>
- *
- * @since ONAP Amsterdam Release 2017-9-6
- */
- private ValidateUtil() {
-
- }
-
- /**
- * Assert String parameter.<br/>
- *
- * @param paramValue parameter data
- * @param paramName parameter name
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static void assertStringNotNull(String paramValue, String paramName) throws ApplicationException {
- if (null != paramValue && !paramValue.isEmpty()) {
- return;
- }
-
- LOGGER.error(paramName + ": Parameter is null or empty.");
- throw new ApplicationException(HttpCode.BAD_REQUEST, paramName + ": Invalid parameter.");
- }
-
- /**
- * Assert object is null.<br/>
- *
- * @param object data object
- * @since ONAP Amsterdam Release 2017-9-6
- */
- public static void assertObjectNotNull(Object object) throws ApplicationException {
- if (null == object) {
- LOGGER.error("Object is null.");
- throw new ApplicationException(HttpCode.BAD_REQUEST, "Object is null.");
- }
-
- }
-
- /**
- * <br>
- *
- * @param str
- * @return
- * @since ONAP Amsterdam Release
- */
- public static boolean isStrEmpty(String str) {
- return null == str || str.isEmpty();
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/main/resources/application-aaf.yaml b/adapters/mso-vfc-adapter/src/main/resources/application-aaf.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/resources/application-aaf.yaml
+++ /dev/null
diff --git a/adapters/mso-vfc-adapter/src/main/resources/application-basic.yaml b/adapters/mso-vfc-adapter/src/main/resources/application-basic.yaml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/adapters/mso-vfc-adapter/src/main/resources/application-basic.yaml
+++ /dev/null
diff --git a/adapters/mso-vfc-adapter/src/main/resources/application.yaml b/adapters/mso-vfc-adapter/src/main/resources/application.yaml
deleted file mode 100644
index 4a500b3a50..0000000000
--- a/adapters/mso-vfc-adapter/src/main/resources/application.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-server:
- port: 8080
- tomcat:
- max-threads: 50
-
-mso:
- site-name: unknown
- logPath: ./logs/vfc/
-
-spring:
- datasource:
- jdbc-url: jdbc:mariadb://${DB_HOST}:${DB_PORT}/requestdb
- username: ${DB_USERNAME}
- password: ${DB_PASSWORD}
- driver-class-name: org.mariadb.jdbc.Driver
- jpa:
- show-sql: false
- hibernate:
- dialect: org.hibernate.dialect.MySQL5Dialect
- ddl-auto: validate
- naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- enable-lazy-load-no-trans: true
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- exposure:
- include: "*"
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use. \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/exceptions/ApplicationExceptionTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/exceptions/ApplicationExceptionTest.java
deleted file mode 100644
index c0305f18de..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/exceptions/ApplicationExceptionTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * ============LICENSE_START======================================================= ONAP : SO
- * ================================================================================ Copyright (C) 2018 TechMahindra
- * ================================================================================ Licensed under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.exceptions;
-
-import static org.junit.Assert.*;
-import org.junit.Test;
-
-public class ApplicationExceptionTest {
- private ApplicationException application = new ApplicationException(500, null);
-
- @Test
- public void testApplicationException() {
- application.setErrorCode(500);
- application.setErrorMsg("ErrorMsg");
- assertEquals(application.getErrorCode(), 500);
- assertEquals(application.getErrorMsg(), "ErrorMsg");
- }
-
- @Test
- public void testbuildErrorResponse() {
- assert (application.buildErrorResponse() != null);
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java
deleted file mode 100644
index 1fedac9cc9..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class AddPnfDataTest {
- AddPnfData pnfData = new AddPnfData();
-
- @Test
- public void getPnfId() {
- pnfData.getPnfId();
- }
-
-
- @Test
- public void setPnfId() {
- pnfData.setPnfId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getPnfName() {
- pnfData.getPnfName();
- }
-
- @Test
- public void setPnfName() {
- pnfData.setPnfName("Router");
- }
-
- @Test
- public void getPnfdId() {
- pnfData.getPnfdId();
- }
-
- @Test
- public void setPnfdId() {
- pnfData.setPnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getPnfProfileId() {
- pnfData.getPnfProfileId();
- }
-
- @Test
- public void setPnfProfileId() {
- pnfData.setPnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getCpData() {
- pnfData.getCpData();
- }
-
- @Test
- public void setCpData() {
- pnfData.setCpData(new List<PnfExtCpData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<PnfExtCpData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(PnfExtCpData pnfExtCpData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends PnfExtCpData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends PnfExtCpData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public PnfExtCpData get(int index) {
- return null;
- }
-
- @Override
- public PnfExtCpData set(int index, PnfExtCpData element) {
- return null;
- }
-
- @Override
- public void add(int index, PnfExtCpData element) {
-
- }
-
- @Override
- public PnfExtCpData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<PnfExtCpData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<PnfExtCpData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<PnfExtCpData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java
deleted file mode 100644
index 9444efd4c5..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AddressRangeTest {
- AddressRange addressRange = new AddressRange();
-
- @Test
- public void getMinAddress() {
- addressRange.getMinAddress();
- }
-
- @Test
- public void setMinAddress() {
- addressRange.setMinAddress("192.168.10.10");
- }
-
- @Test
- public void getMaxAddress() {
- addressRange.getMaxAddress();
- }
-
- @Test
- public void setMaxAddress() {
- addressRange.setMaxAddress("192.168.10.10");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java
deleted file mode 100644
index 06c52e2e52..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedNsTest {
-
- AffectedNs affectedNs = new AffectedNs();
-
- @Test
- public void getNsInstanceId() {
- affectedNs.getNsInstanceId();
- }
-
- @Test
- public void setNsInstanceId() {
- affectedNs.setNsInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getNsdId() {
- affectedNs.getNsdId();
- }
-
- @Test
- public void setNsdId() {
- affectedNs.setNsdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java
deleted file mode 100644
index beecbe0675..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedPnfTest {
- AffectedPnf affectedPnf = new AffectedPnf();
-
- @Test
- public void getPnfid() {
- affectedPnf.getPnfid();
- }
-
- @Test
- public void setPnfid() {
- affectedPnf.setPnfid("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getPnfdid() {
- affectedPnf.getPnfdid();
- }
-
- @Test
- public void setPnfdid() {
- affectedPnf.setPnfdid("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getPnfProfileId() {
- affectedPnf.getPnfProfileId();
- }
-
- @Test
- public void setPnfProfileId() {
- affectedPnf.setPnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getPnfName() {
- affectedPnf.getPnfName();
- }
-
- @Test
- public void setPnfName() {
- affectedPnf.setPnfName("Router");
- }
-
- @Test
- public void getCpInstanceId() {
- affectedPnf.getCpInstanceId();
- }
-
- @Test
- public void setCpInstanceId() {
- affectedPnf.setCpInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java
deleted file mode 100644
index b96fe32836..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedSapTest {
- AffectedSap affectedSap = new AffectedSap();
-
- @Test
- public void getSapInstanceId() {
- affectedSap.getSapInstanceId();
- }
-
- @Test
- public void setSapInstanceId() {
- affectedSap.setSapInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getSapdId() {
- affectedSap.getSapdId();
- }
-
- @Test
- public void setSapdId() {
- affectedSap.setSapdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getSapName() {
- affectedSap.getSapName();
- }
-
- @Test
- public void setSapName() {
- affectedSap.setSapName("Dummy SAP");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java
deleted file mode 100644
index dbc6d0811f..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedVirtualLinkTest {
- AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
-
- @Test
- public void getNsVirtualLinkInstanceId() {
- affectedVirtualLink.getNsVirtualLinkInstanceId();
- }
-
- @Test
- public void setNsVirtualLinkInstanceId() {
- affectedVirtualLink.setNsVirtualLinkInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getNsVirtualLinkDescId() {
- affectedVirtualLink.getNsVirtualLinkDescId();
- }
-
- @Test
- public void setNsVirtualLinkDescId() {
- affectedVirtualLink.setNsVirtualLinkDescId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVlProfileId() {
- affectedVirtualLink.getVlProfileId();
- }
-
- @Test
- public void setVlProfileId() {
- affectedVirtualLink.setVlProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java
deleted file mode 100644
index 810f32d005..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedVnfTest {
- AffectedVnf affectedVnf = new AffectedVnf();
-
- @Test
- public void getVnfInstanceId() {
- affectedVnf.getVnfInstanceId();
- }
-
- @Test
- public void setVnfInstanceId() {
- affectedVnf.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfdId() {
- affectedVnf.getVnfdId();
- }
-
- @Test
- public void setVnfdId() {
- affectedVnf.setVnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfProfileId() {
- affectedVnf.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() {
- affectedVnf.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfName() {
- affectedVnf.getVnfName();
- }
-
- @Test
- public void setVnfName() {
- affectedVnf.setVnfName("Dummy Vnf Name");
- }
-
- @Test
- public void getChangedInfo() {
- affectedVnf.getChangedInfo();
- }
-
- @Test
- public void setChangedInfo() {
- affectedVnf.setChangedInfo(new ChangedInfo());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java
deleted file mode 100644
index 0d5670133d..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class AffectedVnffgTest {
- AffectedVnffg affectedVnffg = new AffectedVnffg();
-
- @Test
- public void getVnffgInstanceId() {
- affectedVnffg.getVnffgInstanceId();
- }
-
- @Test
- public void setVnffgInstanceId() {
- affectedVnffg.setVnffgInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnffgdId() {
- affectedVnffg.getVnffgdId();
- }
-
- @Test
- public void setVnffgdId() {
- affectedVnffg.setVnffgdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java
deleted file mode 100644
index 99a40e4ee1..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class AffinityOrAntiAffinityRuleTest {
- AffinityOrAntiAffinityRule affinityOrAntiAffinityRule = new AffinityOrAntiAffinityRule();
-
- @Test
- public void getVnfdId() {
- affinityOrAntiAffinityRule.getVnfdId();
- }
-
- @Test
- public void setVnfdId() {
- affinityOrAntiAffinityRule.setVnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfProfileId() {
- affinityOrAntiAffinityRule.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() {
- affinityOrAntiAffinityRule.setVnfProfileId(new List<String>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<String> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(String s) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public String get(int index) {
- return null;
- }
-
- @Override
- public String set(int index, String element) {
- return null;
- }
-
- @Override
- public void add(int index, String element) {
-
- }
-
- @Override
- public String remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<String> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<String> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<String> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getVnfInstanceId() {
- affinityOrAntiAffinityRule.getVnfInstanceId();
- }
-
- @Test
- public void setVnfInstanceId() {
- affinityOrAntiAffinityRule.setVnfInstanceId(new List<String>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<String> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(String s) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public String get(int index) {
- return null;
- }
-
- @Override
- public String set(int index, String element) {
- return null;
- }
-
- @Override
- public void add(int index, String element) {
-
- }
-
- @Override
- public String remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<String> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<String> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<String> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java
deleted file mode 100644
index 41077fbe67..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class ChangedInfoTest {
- ChangedInfo changedInfo = new ChangedInfo();
-
- @Test
- public void getChangedVnfInfo() {
- changedInfo.getChangedVnfInfo();
- }
-
- @Test
- public void setChangedVnfInfo() {
- changedInfo.setChangedVnfInfo(new ModifyVnfInfoData());
- }
-
- @Test
- public void getChangedExtConnectivity() {
- changedInfo.getChangedExtConnectivity();
- }
-
- @Test
- public void setChangedExtConnectivity() {
- changedInfo.setChangedExtConnectivity(new ExtVirtualLinkInfo());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java
deleted file mode 100644
index e9c011b86a..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class CivicAddressElementTest {
- CivicAddressElement civicAddressElement = new CivicAddressElement();
-
- @Test
- public void getCaType() {
- civicAddressElement.getCaType();
- }
-
- @Test
- public void setCaType() {
- civicAddressElement.setCaType(12);
- }
-
- @Test
- public void getCaValue() {
- civicAddressElement.getCaValue();
- }
-
- @Test
- public void setCaValue() {
- civicAddressElement.setCaValue("Dummy Ca value");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java
deleted file mode 100644
index e47d02c926..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class CpProtocolDataTest {
- CpProtocolData cpProtocolData = new CpProtocolData();
-
- @Test
- public void getLayerProtocol() {
- cpProtocolData.getLayerProtocol();
- }
-
- @Test
- public void setLayerProtocol() {
- cpProtocolData.setLayerProtocol("BGP");
- }
-
- @Test
- public void getIpOverEthernet() {
- cpProtocolData.getIpOverEthernet();
- }
-
- @Test
- public void setIpOverEthernet() {
- cpProtocolData.setIpOverEthernet(new IpOverEthernetAddressData());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java
deleted file mode 100644
index a2a6ae4fe1..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class CreateNsRequestTest {
- CreateNsRequest createNsRequest = new CreateNsRequest();
-
- @Test
- public void getNsdId() {
- createNsRequest.getNsdId();
- }
-
- @Test
- public void setNsdId() {
- createNsRequest.setNsdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getNsDescription() {
- createNsRequest.getNsDescription();
- }
-
- @Test
- public void setNsDescription() {
- createNsRequest.setNsDescription("Dummy description");
- }
-
- @Test
- public void getNsName() {
- createNsRequest.getNsName();
- }
-
- @Test
- public void setNsName() {
- createNsRequest.setNsName("Dummy Name");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CustomerModelTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CustomerModelTest.java
deleted file mode 100644
index 548d8b3645..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CustomerModelTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class CustomerModelTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- CustomerModel customerModel = new CustomerModel();
-
- @Test
- public void getGlobalCustomerId() throws Exception {
- customerModel.getGlobalCustomerId();
- }
-
- @Test
- public void setGlobalCustomerId() throws Exception {
- customerModel.setGlobalCustomerId("test");
- }
-
- @Test
- public void getServiceType() throws Exception {
- customerModel.getServiceType();
- }
-
- @Test
- public void setServiceType() throws Exception {
- customerModel.setServiceType("service");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java
deleted file mode 100644
index 92cec88b34..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class ExtLinkPortInfoTest {
-
- ExtLinkPortInfo extLinkPortInfo = new ExtLinkPortInfo();
-
- @Test
- public void getId() {
- extLinkPortInfo.getId();
- }
-
- @Test
- public void setId() {
- extLinkPortInfo.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getResourceHandle() {
- extLinkPortInfo.getResourceHandle();
- }
-
- @Test
- public void setResourceHandle() {
- extLinkPortInfo.setResourceHandle(new ResourceHandle());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java
deleted file mode 100644
index c455b36a46..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class ExtVirtualLinkInfoTest {
- ExtVirtualLinkInfo extVirtualLinkInfo = new ExtVirtualLinkInfo();
-
- @Test
- public void getId() {
- extVirtualLinkInfo.getId();
- }
-
- @Test
- public void setId() {
- extVirtualLinkInfo.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getResourceHandle() {
- extVirtualLinkInfo.getResourceHandle();
- }
-
- @Test
- public void setResourceHandle() {
- extVirtualLinkInfo.setResourceHandle(new ResourceHandle());
- }
-
- @Test
- public void getExtLinkPorts() {
- extVirtualLinkInfo.getExtLinkPorts();
- }
-
- @Test
- public void setExtLinkPorts() {
- extVirtualLinkInfo.setExtLinkPorts(new ExtLinkPortInfo());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java
deleted file mode 100644
index f27b041690..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class InstantiateNsRequestTest {
- InstantiateNsRequest instantiateNsRequest = new InstantiateNsRequest();
-
- @Test
- public void getNsFlavourId() {
- instantiateNsRequest.getNsFlavourId();
- }
-
- @Test
- public void setNsFlavourId() {
- instantiateNsRequest.setNsFlavourId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getSapData() {
- instantiateNsRequest.getSapData();
- }
-
- @Test
- public void setSapData() {
- instantiateNsRequest.setSapData(new List<SapData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<SapData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(SapData sapData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends SapData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends SapData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public SapData get(int index) {
- return null;
- }
-
- @Override
- public SapData set(int index, SapData element) {
- return null;
- }
-
- @Override
- public void add(int index, SapData element) {
-
- }
-
- @Override
- public SapData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<SapData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<SapData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<SapData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAddpnfData() {
- instantiateNsRequest.getAddpnfData();
- }
-
- @Test
- public void setAddpnfData() {
- instantiateNsRequest.setAddpnfData(new List<AddPnfData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AddPnfData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AddPnfData addPnfData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AddPnfData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AddPnfData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AddPnfData get(int index) {
- return null;
- }
-
- @Override
- public AddPnfData set(int index, AddPnfData element) {
- return null;
- }
-
- @Override
- public void add(int index, AddPnfData element) {
-
- }
-
- @Override
- public AddPnfData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AddPnfData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AddPnfData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AddPnfData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getVnfInstanceData() {
- instantiateNsRequest.getVnfInstanceData();
- }
-
- @Test
- public void setVnfInstanceData() {
- instantiateNsRequest.setVnfInstanceData(new List<VnfInstanceData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<VnfInstanceData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(VnfInstanceData vnfInstanceData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends VnfInstanceData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends VnfInstanceData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public VnfInstanceData get(int index) {
- return null;
- }
-
- @Override
- public VnfInstanceData set(int index, VnfInstanceData element) {
- return null;
- }
-
- @Override
- public void add(int index, VnfInstanceData element) {
-
- }
-
- @Override
- public VnfInstanceData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<VnfInstanceData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<VnfInstanceData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<VnfInstanceData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getNestedNsInstanceId() {
- instantiateNsRequest.getNestedNsInstanceId();
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java
deleted file mode 100644
index edf6346bca..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class IpAddressesTest {
- IpAddresses ipAddresses = new IpAddresses();
-
- @Test
- public void getType() {
- ipAddresses.getType();
- }
-
- @Test
- public void setType() {
- ipAddresses.setType("Dummy Type");
- }
-
- @Test
- public void getFixedAddresses() {
- ipAddresses.getFixedAddresses();
- }
-
- @Test
- public void setFixedAddresses() {
- ipAddresses.setFixedAddresses(new List<String>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<String> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(String s) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends String> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public String get(int index) {
- return null;
- }
-
- @Override
- public String set(int index, String element) {
- return null;
- }
-
- @Override
- public void add(int index, String element) {
-
- }
-
- @Override
- public String remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<String> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<String> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<String> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getNumDynamicAddresses() {
- ipAddresses.getNumDynamicAddresses();
- }
-
- @Test
- public void setNumDynamicAddresses() {
- ipAddresses.setNumDynamicAddresses(5);
- }
-
- @Test
- public void getAddressRange() {
- ipAddresses.getAddressRange();
- }
-
- @Test
- public void setAddressRange() {
- ipAddresses.setAddressRange(new AddressRange());
- }
-
- @Test
- public void getSubnetId() {
- ipAddresses.getSubnetId();
- }
-
- @Test
- public void setSubnetId() {
- ipAddresses.setSubnetId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java
deleted file mode 100644
index 0088cdc50b..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class IpOverEthernetAddressDataTest {
- IpOverEthernetAddressData ipOverEthernetAddressData = new IpOverEthernetAddressData();
-
- @Test
- public void getMacAddress() {
- ipOverEthernetAddressData.getMacAddress();
- }
-
- @Test
- public void setMacAddress() {
- ipOverEthernetAddressData.setMacAddress("4e:86:9f:62:c1:bf");
- }
-
- @Test
- public void getIpAddresses() {
- ipOverEthernetAddressData.getIpAddresses();
- }
-
- @Test
- public void setIpAddresses() {
- ipOverEthernetAddressData.setIpAddresses(new List<IpAddresses>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<IpAddresses> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(IpAddresses ipAddresses) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends IpAddresses> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends IpAddresses> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public IpAddresses get(int index) {
- return null;
- }
-
- @Override
- public IpAddresses set(int index, IpAddresses element) {
- return null;
- }
-
- @Override
- public void add(int index, IpAddresses element) {
-
- }
-
- @Override
- public IpAddresses remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<IpAddresses> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<IpAddresses> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<IpAddresses> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java
deleted file mode 100644
index e447c85ee7..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class LinkTest {
- Link link = new Link();
-
- @Test
- public void getHref() {
- link.getHref();
- }
-
- @Test
- public void setHref() {
- link.setHref("dummy href");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java
deleted file mode 100644
index aef87c47b1..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class LinksTest {
- Links links = new Links();
-
- @Test
- public void getSelf() {
- links.getSelf();
- }
-
- @Test
- public void setSelf() {
- links.setSelf(new Link());
- }
-
- @Test
- public void getNsInstance() {
- links.getNsInstance();
- }
-
- @Test
- public void setNsInstance() {
- links.setNsInstance(new Link());
- }
-
- @Test
- public void getCancel() {
- links.getCancel();
- }
-
- @Test
- public void setCancel() {
- links.setCancel(new Link());
- }
-
- @Test
- public void getRetry() {
- links.getRetry();
- }
-
- @Test
- public void setRetry() {
- links.setRetry(new Link());
- }
-
- @Test
- public void getRollback() {
- links.getRollback();
- }
-
- @Test
- public void setRollback() {
- links.setRollback(new Link());
- }
-
- @Test
- public void getContinues() {
- links.getContinues();
- }
-
- @Test
- public void setContinues() {
- links.setContinues(new Link());
- }
-
- @Test
- public void getFail() {
- links.getFail();
- }
-
- @Test
- public void setFail() {
- links.setFail(new Link());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintTest.java
deleted file mode 100644
index 2b217469e5..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class LocationConstraintTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- LocationConstraint locationConstraint = new LocationConstraint();
-
- @Test
- public void getVnfProfileId() throws Exception {
- locationConstraint.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() throws Exception {
- locationConstraint.setVnfProfileId("profileID");
- }
-
- @Test
- public void getLocationConstraints() throws Exception {
- locationConstraint.getLocationConstraints();
- }
-
- @Test
- public void setLocationConstraints() throws Exception {
- locationConstraint.setLocationConstraints(new VimLocation());
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java
deleted file mode 100644
index e68b12a626..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class LocationConstraintsTest {
- LocationConstraints locationConstraints = new LocationConstraints();
-
- @Test
- public void getCountryCode() {
- locationConstraints.getCountryCode();
- }
-
- @Test
- public void setCountryCode() {
- locationConstraints.setCountryCode("IND");
-
- }
-
- @Test
- public void getCivicAddressElement() {
- locationConstraints.getCivicAddressElement();
- }
-
- @Test
- public void setCivicAddressElement() {
- locationConstraints.setCivicAddressElement(new CivicAddressElement());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java
deleted file mode 100644
index c300923857..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.HashMap;
-import static org.junit.Assert.*;
-
-public class ModifyVnfInfoDataTest {
- ModifyVnfInfoData modifyVnfInfoData = new ModifyVnfInfoData();
-
- @Test
- public void getVnfInstanceId() {
- modifyVnfInfoData.getVnfInstanceId();
- }
-
- @Test
- public void setVnfInstanceId() {
- modifyVnfInfoData.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfInstanceName() {
- modifyVnfInfoData.getVnfInstanceName();
- }
-
- @Test
- public void setVnfInstanceName() {
- modifyVnfInfoData.setVnfInstanceName("Dummy vnfInstanceName");
- }
-
- @Test
- public void getVnfInstanceDescription() {
- modifyVnfInfoData.getVnfInstanceDescription();
- }
-
- @Test
- public void setVnfInstanceDescription() {
- modifyVnfInfoData.setVnfInstanceDescription("Dummy vnfInstanceDescription");
- }
-
- @Test
- public void getVnfPkgId() {
- modifyVnfInfoData.getVnfPkgId();
- }
-
- @Test
- public void setVnfPkgId() {
- modifyVnfInfoData.setVnfPkgId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfConfigurableProperties() {
- modifyVnfInfoData.getVnfConfigurableProperties();
- }
-
- @Test
- public void setVnfConfigurableProperties() {
- modifyVnfInfoData.setVnfConfigurableProperties(new HashMap<>());
- }
-
- @Test
- public void getMetadata() {
- modifyVnfInfoData.getMetadata();
- }
-
- @Test
- public void setMetadata() {
- modifyVnfInfoData.setMetadata(new HashMap<>());
- }
-
- @Test
- public void getExtensions() {
- modifyVnfInfoData.getExtensions();
- }
-
- @Test
- public void setExtensions() {
- modifyVnfInfoData.setExtensions(new HashMap<>());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NSResourceInputParameterTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NSResourceInputParameterTest.java
deleted file mode 100644
index 082d4e69f4..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NSResourceInputParameterTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class NSResourceInputParameterTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NSResourceInputParameter nsResourceInputParameter = new NSResourceInputParameter();
-
- @Test
- public void getNsServiceName() throws Exception {
- nsResourceInputParameter.getNsServiceName();
- }
-
- @Test
- public void setNsServiceName() throws Exception {
- nsResourceInputParameter.setNsServiceName("service");
- }
-
- @Test
- public void getNsServiceDescription() throws Exception {
- nsResourceInputParameter.getNsServiceDescription();
- }
-
- @Test
- public void setNsServiceDescription() throws Exception {
- nsResourceInputParameter.setNsServiceDescription("desc");
- }
-
- @Test
- public void getNsParameters() throws Exception {
- nsResourceInputParameter.getNsParameters();
- }
-
- @Test
- public void setNsParameters() throws Exception {
- nsResourceInputParameter.setNsParameters(new NsParameters());
- }
-
- @Test
- public void getNsOperationKey() throws Exception {
- nsResourceInputParameter.getNsOperationKey();
- }
-
- @Test
- public void setNsOperationKey() throws Exception {
- nsResourceInputParameter.setNsOperationKey(new NsOperationKey());
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsCreateReqTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsCreateReqTest.java
deleted file mode 100644
index c2e6b583af..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsCreateReqTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class NsCreateReqTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NsCreateReq nsCreateReq = new NsCreateReq();
-
- @Test
- public void getContext() throws Exception {
- nsCreateReq.getContext();
- }
-
- @Test
- public void setContext() throws Exception {
- nsCreateReq.setContext(new CustomerModel());
- }
-
- @Test
- public void getCsarId() throws Exception {
- nsCreateReq.getCsarId();
- }
-
- @Test
- public void setCsarId() throws Exception {
- nsCreateReq.setCsarId("csarid");
- }
-
- @Test
- public void getNsName() throws Exception {
- nsCreateReq.getNsName();
- }
-
- @Test
- public void setNsName() throws Exception {
- nsCreateReq.setNsName("nsname");
- }
-
- @Test
- public void getDescription() throws Exception {
- nsCreateReq.getDescription();
- }
-
- @Test
- public void setDescription() throws Exception {
- nsCreateReq.setDescription("desc");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsInstantiateReqTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsInstantiateReqTest.java
deleted file mode 100644
index 70e54a1c09..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsInstantiateReqTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class NsInstantiateReqTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NsInstantiateReq nsInstantiateReq = new NsInstantiateReq();
-
- @Test
- public void getNsInstanceId() throws Exception {
- nsInstantiateReq.getNsInstanceId();
- }
-
- @Test
- public void setNsInstanceId() throws Exception {
- nsInstantiateReq.setNsInstanceId("test");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java
deleted file mode 100644
index f5d485a8c7..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import org.onap.so.adapters.vfc.constant.CommonConstant;
-import java.time.LocalDateTime;
-import java.util.Date;
-import static org.junit.Assert.*;
-
-public class NsLcmOpOccTest {
- NsLcmOpOcc nsLcmOpOcc = new NsLcmOpOcc();
-
- @Test
- public void getLcmOperationType() {
- nsLcmOpOcc.getLcmOperationType();
- }
-
- @Test
- public void setLcmOperationType() {
- nsLcmOpOcc.setLcmOperationType(CommonConstant.lcmOperationType.INSTANTIATE);
- }
-
- @Test
- public void getCancelMode() {
- nsLcmOpOcc.getCancelMode();
- }
-
- @Test
- public void setCancelMode() {
- nsLcmOpOcc.setCancelMode(CommonConstant.cancelMode.GRACEFUL);
- }
-
- @Test
- public void getOperationState() {
- nsLcmOpOcc.getOperationState();
- }
-
- @Test
- public void setOperationState() {
- nsLcmOpOcc.setOperationState(CommonConstant.operationState.COMPLETED);
- }
-
- @Test
- public void getId() {
- nsLcmOpOcc.getId();
- }
-
- @Test
- public void setId() {
- nsLcmOpOcc.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getStatusEnteredTime() {
- nsLcmOpOcc.getStatusEnteredTime();
- }
-
- @Test
- public void setStatusEnteredTime() {
- nsLcmOpOcc.setStatusEnteredTime(LocalDateTime.now().toString());
- }
-
- @Test
- public void getNsInstanceId() {
- nsLcmOpOcc.getNsInstanceId();
- }
-
- @Test
- public void setNsInstanceId() {
- nsLcmOpOcc.setNsInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getStartTime() {
- nsLcmOpOcc.getStartTime();
- }
-
- @Test
- public void setStartTime() {
- nsLcmOpOcc.setStartTime(LocalDateTime.now().toString());
- }
-
- @Test
- public void getAutomaticInvocation() {
- nsLcmOpOcc.getAutomaticInvocation();
- }
-
- @Test
- public void setAutomaticInvocation() {
- nsLcmOpOcc.setAutomaticInvocation(true);
- }
-
- @Test
- public void getOperationParams() {
- nsLcmOpOcc.getOperationParams();
- }
-
- @Test
- public void setOperationParams() {
- nsLcmOpOcc.setOperationParams("Dummy operationParams");
- }
-
- @Test
- public void getCancelPending() {
- nsLcmOpOcc.getCancelPending();
- }
-
- @Test
- public void setCancelPending() {
- nsLcmOpOcc.setCancelPending(true);
- }
-
- @Test
- public void getError() {
- nsLcmOpOcc.getError();
- }
-
- @Test
- public void setError() {
- nsLcmOpOcc.setError(new ProblemDetails());
- }
-
- @Test
- public void getLinks() {
- nsLcmOpOcc.getLinks();
- }
-
- @Test
- public void setLinks() {
- nsLcmOpOcc.setLinks(new Links());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsOperationKeyTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsOperationKeyTest.java
deleted file mode 100644
index a8939f8996..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsOperationKeyTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class NsOperationKeyTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NsOperationKey nsOperationKey = new NsOperationKey();
-
- @Test
- public void getGlobalSubscriberId() throws Exception {
- nsOperationKey.getGlobalSubscriberId();
- }
-
- @Test
- public void setGlobalSubscriberId() throws Exception {
- nsOperationKey.setGlobalSubscriberId("subscriberid");
- }
-
- @Test
- public void getServiceType() throws Exception {
- nsOperationKey.getServiceType();
- }
-
- @Test
- public void setServiceType() throws Exception {
- nsOperationKey.setServiceType("servicetype");
- }
-
- @Test
- public void getServiceId() throws Exception {
- nsOperationKey.getServiceId();
- }
-
- @Test
- public void setServiceId() throws Exception {
- nsOperationKey.setServiceId("serviceid");
- }
-
- @Test
- public void getOperationId() throws Exception {
- nsOperationKey.getOperationId();
- }
-
- @Test
- public void setOperationId() throws Exception {
- nsOperationKey.setOperationId("test");
- }
-
- @Test
- public void getNodeTemplateUUID() throws Exception {
- nsOperationKey.getNodeTemplateUUID();
- }
-
- @Test
- public void setNodeTemplateUUID() throws Exception {
- nsOperationKey.setNodeTemplateUUID("nodeTemplateid");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsParametersTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsParametersTest.java
deleted file mode 100644
index 45c46edd0d..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsParametersTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collections;
-import java.util.HashMap;
-
-public class NsParametersTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NsParameters nsParameters = new NsParameters();
-
- @Test
- public void getLocationConstraints() throws Exception {
- nsParameters.getLocationConstraints();
- }
-
- @Test
- public void setLocationConstraints() throws Exception {
- nsParameters.setLocationConstraints(Collections.emptyList());
- }
-
- @Test
- public void getAdditionalParamForNs() throws Exception {
- nsParameters.getAdditionalParamForNs();
- }
-
- @Test
- public void setAdditionalParamForNs() throws Exception {
- nsParameters.setAdditionalParamForNs(new HashMap<>());
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsProgressStatusTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsProgressStatusTest.java
deleted file mode 100644
index b1040ef463..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsProgressStatusTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Arrays;
-
-public class NsProgressStatusTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- NsProgressStatus nsProgressStatus = new NsProgressStatus();
-
- @Test
- public void getJobId() throws Exception {
- nsProgressStatus.getJobId();
- }
-
- @Test
- public void setJobId() throws Exception {
- nsProgressStatus.setJobId("jobid");
- }
-
- @Test
- public void getResponseDescriptor() throws Exception {
- nsProgressStatus.getResponseDescriptor();
- }
-
- @Test
- public void setResponseDescriptor() throws Exception {
- nsProgressStatus.setResponseDescriptor(new ResponseDescriptor());
- }
-
- @Test
- public void getResponseHistoryList() throws Exception {
- nsProgressStatus.getResponseHistoryList();
- }
-
- @Test
- public void setResponseHistoryList() throws Exception {
- nsProgressStatus.setResponseHistoryList(Arrays.asList(new ResponseDescriptor()));
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java
deleted file mode 100644
index e0455b0728..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.HashMap;
-import static org.junit.Assert.*;
-
-public class ParamsForVnfTest {
-
- ParamsForVnf paramsForVnf = new ParamsForVnf();
-
- @Test
- public void getVnfProfileId() {
- paramsForVnf.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() {
- paramsForVnf.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getAdditionalParams() {
- paramsForVnf.getAdditionalParams();
- }
-
- @Test
- public void setAdditionalParams() {
- paramsForVnf.setAdditionalParams(new HashMap<>());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java
deleted file mode 100644
index c586c7eb65..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class PnfExtCpDataTest {
- PnfExtCpData pnfExtCpData = new PnfExtCpData();
-
- @Test
- public void getCpInstanceI16() {
- pnfExtCpData.getCpInstanceI16();
- }
-
- @Test
- public void setCpInstanceI16() {
- pnfExtCpData.setCpInstanceI16("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getCpdId() {
- pnfExtCpData.getCpdId();
- }
-
- @Test
- public void setCpdId() {
- pnfExtCpData.setCpdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getCpProtocolData() {
- pnfExtCpData.getCpProtocolData();
- }
-
- @Test
- public void setCpProtocolData() {
- pnfExtCpData.setCpProtocolData(new List<CpProtocolData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<CpProtocolData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(CpProtocolData cpProtocolData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends CpProtocolData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends CpProtocolData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public CpProtocolData get(int index) {
- return null;
- }
-
- @Override
- public CpProtocolData set(int index, CpProtocolData element) {
- return null;
- }
-
- @Override
- public void add(int index, CpProtocolData element) {
-
- }
-
- @Override
- public CpProtocolData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<CpProtocolData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<CpProtocolData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<CpProtocolData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java
deleted file mode 100644
index ddea6cca40..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class ProblemDetailsTest {
- ProblemDetails problemDetails = new ProblemDetails();
-
- @Test
- public void getType() {
- problemDetails.getType();
- }
-
- @Test
- public void setType() {
- problemDetails.setType("Dummy Type");
- }
-
- @Test
- public void getTitle() {
- problemDetails.getTitle();
- }
-
- @Test
- public void setTitle() {
- problemDetails.setTitle("Dummy Title");
- }
-
- @Test
- public void getStatus() {
- problemDetails.getStatus();
- }
-
- @Test
- public void setStatus() {
- problemDetails.setStatus(200);
- }
-
- @Test
- public void getDetail() {
- problemDetails.getDetail();
- }
-
- @Test
- public void setDetail() {
- problemDetails.setTitle("Dummy Title");
- }
-
- @Test
- public void getInstance() {
- problemDetails.getInstance();
- }
-
- @Test
- public void setInstance() {
- problemDetails.setInstance("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java
deleted file mode 100644
index 9c4a0295e6..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java
+++ /dev/null
@@ -1,773 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class ResourceChangesTest {
- ResourceChanges resourceChanges = new ResourceChanges();
-
- @Test
- public void getAffectedVnfs() {
- resourceChanges.getAffectedVnfs();
- }
-
- @Test
- public void setAffectedVnfs() {
- resourceChanges.setAffectedVnfs(new List<AffectedVnf>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedVnf> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedVnf affectedVnf) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedVnf> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedVnf> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedVnf get(int index) {
- return null;
- }
-
- @Override
- public AffectedVnf set(int index, AffectedVnf element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedVnf element) {
-
- }
-
- @Override
- public AffectedVnf remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedVnf> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedVnf> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedVnf> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAffectedPnfs() {
- resourceChanges.getAffectedPnfs();
- }
-
- @Test
- public void setAffectedPnfs() {
- resourceChanges.setAffectedPnfs(new List<AffectedPnf>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedPnf> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedPnf affectedPnf) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedPnf> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedPnf> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedPnf get(int index) {
- return null;
- }
-
- @Override
- public AffectedPnf set(int index, AffectedPnf element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedPnf element) {
-
- }
-
- @Override
- public AffectedPnf remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedPnf> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedPnf> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedPnf> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAffectedVls() {
- resourceChanges.getAffectedVls();
- }
-
- @Test
- public void setAffectedVls() {
- resourceChanges.setAffectedVls(new List<AffectedVirtualLink>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedVirtualLink> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedVirtualLink affectedVirtualLink) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedVirtualLink> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedVirtualLink> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedVirtualLink get(int index) {
- return null;
- }
-
- @Override
- public AffectedVirtualLink set(int index, AffectedVirtualLink element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedVirtualLink element) {
-
- }
-
- @Override
- public AffectedVirtualLink remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedVirtualLink> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedVirtualLink> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedVirtualLink> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAffectedVnffgs() {
- resourceChanges.getAffectedVnffgs();
- }
-
- @Test
- public void setAffectedVnffgs() {
- resourceChanges.setAffectedVnffgs(new List<AffectedVnffg>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedVnffg> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedVnffg affectedVnffg) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedVnffg> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedVnffg> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedVnffg get(int index) {
- return null;
- }
-
- @Override
- public AffectedVnffg set(int index, AffectedVnffg element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedVnffg element) {
-
- }
-
- @Override
- public AffectedVnffg remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedVnffg> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedVnffg> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedVnffg> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAffectedNss() {
- resourceChanges.getAffectedNss();
- }
-
- @Test
- public void setAffectedNss() {
- resourceChanges.setAffectedNss(new List<AffectedNs>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedNs> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedNs affectedNs) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedNs> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedNs> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedNs get(int index) {
- return null;
- }
-
- @Override
- public AffectedNs set(int index, AffectedNs element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedNs element) {
-
- }
-
- @Override
- public AffectedNs remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedNs> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedNs> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedNs> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-
- @Test
- public void getAffectedSaps() {
- resourceChanges.getAffectedSaps();
- }
-
- @Test
- public void setAffectedSaps() {
- resourceChanges.setAffectedSaps(new List<AffectedSap>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<AffectedSap> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(AffectedSap affectedSap) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends AffectedSap> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends AffectedSap> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public AffectedSap get(int index) {
- return null;
- }
-
- @Override
- public AffectedSap set(int index, AffectedSap element) {
- return null;
- }
-
- @Override
- public void add(int index, AffectedSap element) {
-
- }
-
- @Override
- public AffectedSap remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<AffectedSap> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<AffectedSap> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<AffectedSap> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java
deleted file mode 100644
index 6390c5afbd..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class ResourceHandleTest {
- ResourceHandle resourceHandle = new ResourceHandle();
-
- @Test
- public void getVimId() {
- resourceHandle.getVimId();
- }
-
- @Test
- public void setVimId() {
- resourceHandle.setVimId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getResourceProviderId() {
- resourceHandle.getResourceProviderId();
- }
-
- @Test
- public void setResourceProviderId() {
- resourceHandle.setResourceProviderId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getResourceId() {
- resourceHandle.getResourceId();
- }
-
- @Test
- public void setResourceId() {
- resourceHandle.setResourceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVimLevelResourceType() {
- resourceHandle.getVimLevelResourceType();
- }
-
- @Test
- public void setVimLevelResourceType() {
- resourceHandle.setVimLevelResourceType("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResponseDescriptorTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResponseDescriptorTest.java
deleted file mode 100644
index 3f2f73531c..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResponseDescriptorTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class ResponseDescriptorTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- ResponseDescriptor responseDescriptor = new ResponseDescriptor();
-
- @Test
- public void getStatus() throws Exception {
- responseDescriptor.getStatus();
- }
-
- @Test
- public void setStatus() throws Exception {
- responseDescriptor.setStatus("test");
- }
-
- @Test
- public void getProgress() throws Exception {
- responseDescriptor.getProgress();
- }
-
- @Test
- public void setProgress() throws Exception {
- responseDescriptor.setProgress("10");
- }
-
- @Test
- public void getStatusDescription() throws Exception {
- responseDescriptor.getStatusDescription();
- }
-
- @Test
- public void setStatusDescription() throws Exception {
- responseDescriptor.setStatusDescription("test");
- }
-
- @Test
- public void getErrorCode() throws Exception {
- responseDescriptor.getErrorCode();
- }
-
- @Test
- public void setErrorCode() throws Exception {
- responseDescriptor.setErrorCode(-1);
- }
-
- @Test
- public void getResponseId() throws Exception {
- responseDescriptor.getResponseId();
- }
-
- @Test
- public void setResponseId() throws Exception {
- responseDescriptor.setResponseId(1);
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/RestfulResponseTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/RestfulResponseTest.java
deleted file mode 100644
index 64f8da65b4..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/RestfulResponseTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.HashMap;
-
-public class RestfulResponseTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- RestfulResponse restfulResponse = new RestfulResponse();
-
- @Test
- public void getStatus() throws Exception {
- restfulResponse.getStatus();
- }
-
- @Test
- public void setStatus() throws Exception {
- restfulResponse.setStatus(1);
- }
-
- @Test
- public void getRespHeaderMap() throws Exception {
- restfulResponse.getRespHeaderMap();
- }
-
- @Test
- public void setRespHeaderMap() throws Exception {
- restfulResponse.setRespHeaderMap(new HashMap<>());
- }
-
- @Test
- public void getRespHeaderInt() throws Exception {
- restfulResponse.getRespHeaderInt("1");
- }
-
- @Test
- public void getRespHeaderLong() throws Exception {
- restfulResponse.getRespHeaderLong("1");
- }
-
- @Test
- public void getRespHeaderStr() throws Exception {
- restfulResponse.getRespHeaderStr("test");
- }
-
- @Test
- public void getResponseContent() throws Exception {
- restfulResponse.getResponseContent();
- }
-
- @Test
- public void setResponseContent() throws Exception {
- restfulResponse.setResponseContent("responseString");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java
deleted file mode 100644
index 2a455994b8..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import static org.junit.Assert.*;
-
-public class SapDataTest {
-
- SapData sapData = new SapData();
-
- @Test
- public void getSapdId() {
- sapData.getSapdId();
- }
-
- @Test
- public void setSapdId() {
- sapData.setSapdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getSapName() {
- sapData.getSapName();
- }
-
- @Test
- public void setSapName() {
- sapData.setSapName("Dummy SapName");
- }
-
- @Test
- public void getDescription() {
- sapData.getDescription();
- }
-
- @Test
- public void setDescription() {
- sapData.setDescription("Dummy Description");
- }
-
- @Test
- public void getSapProtocolData() {
- sapData.getSapProtocolData();
- }
-
- @Test
- public void setSapProtocolData() {
- sapData.setSapProtocolData(new List<CpProtocolData>() {
- @Override
- public int size() {
- return 0;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean contains(Object o) {
- return false;
- }
-
- @Override
- public Iterator<CpProtocolData> iterator() {
- return null;
- }
-
- @Override
- public Object[] toArray() {
- return new Object[0];
- }
-
- @Override
- public <T> T[] toArray(T[] a) {
- return null;
- }
-
- @Override
- public boolean add(CpProtocolData cpProtocolData) {
- return false;
- }
-
- @Override
- public boolean remove(Object o) {
- return false;
- }
-
- @Override
- public boolean containsAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean addAll(Collection<? extends CpProtocolData> c) {
- return false;
- }
-
- @Override
- public boolean addAll(int index, Collection<? extends CpProtocolData> c) {
- return false;
- }
-
- @Override
- public boolean removeAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public boolean retainAll(Collection<?> c) {
- return false;
- }
-
- @Override
- public void clear() {
-
- }
-
- @Override
- public CpProtocolData get(int index) {
- return null;
- }
-
- @Override
- public CpProtocolData set(int index, CpProtocolData element) {
- return null;
- }
-
- @Override
- public void add(int index, CpProtocolData element) {
-
- }
-
- @Override
- public CpProtocolData remove(int index) {
- return null;
- }
-
- @Override
- public int indexOf(Object o) {
- return 0;
- }
-
- @Override
- public int lastIndexOf(Object o) {
- return 0;
- }
-
- @Override
- public ListIterator<CpProtocolData> listIterator() {
- return null;
- }
-
- @Override
- public ListIterator<CpProtocolData> listIterator(int index) {
- return null;
- }
-
- @Override
- public List<CpProtocolData> subList(int fromIndex, int toIndex) {
- return null;
- }
- });
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VimLocationTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VimLocationTest.java
deleted file mode 100644
index 85d3a136af..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VimLocationTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-
-public class VimLocationTest {
- // TODO: following test case is done for coverage
- // later it should be modified for proper test.
- VimLocation vimLocation = new VimLocation();
-
- @Test
- public void getVimId() throws Exception {
- vimLocation.getVimId();
- }
-
- @Test
- public void setVimId() throws Exception {
- vimLocation.setVimId("vimid");
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java
deleted file mode 100644
index b9bdfe3f6e..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class VnfInstanceDataTest {
- VnfInstanceData vnfInstanceData = new VnfInstanceData();
-
- @Test
- public void getVnfInstanceId() {
- vnfInstanceData.getVnfInstanceId();
- }
-
- @Test
- public void setVnfInstanceId() {
- vnfInstanceData.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getVnfProfileId() {
- vnfInstanceData.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() {
- vnfInstanceData.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java
deleted file mode 100644
index b8f9b8e3e2..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.model;
-
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-public class VnfLocationConstraintTest {
- VnfLocationConstraint vnfLocationConstraint = new VnfLocationConstraint();
-
- @Test
- public void getVnfProfileId() {
- vnfLocationConstraint.getVnfProfileId();
- }
-
- @Test
- public void setVnfProfileId() {
- vnfLocationConstraint.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
- }
-
- @Test
- public void getLocationConstraints() {
- vnfLocationConstraint.getLocationConstraints();
- }
-
- @Test
- public void setLocationConstraints() {
- vnfLocationConstraint.setLocationConstraints(new LocationConstraint());
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/EmbeddedMariaDbConfig.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/EmbeddedMariaDbConfig.java
deleted file mode 100644
index feb40f73e0..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/EmbeddedMariaDbConfig.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import ch.vorburger.exec.ManagedProcessException;
-import ch.vorburger.mariadb4j.DBConfigurationBuilder;
-import ch.vorburger.mariadb4j.springframework.MariaDB4jSpringService;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.annotation.Profile;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-@Configuration
-@Profile({"test"})
-@EnableTransactionManagement
-@EnableJpaRepositories(entityManagerFactoryRef = "requestEntityManagerFactory",
- transactionManagerRef = "requestTransactionManager", basePackages = {"org.onap.so.db.request.data.repository"})
-public class EmbeddedMariaDbConfig {
-
- @Bean
- MariaDB4jSpringService mariaDB4jSpringService() {
- return new MariaDB4jSpringService();
- }
-
- @Primary
- @Bean(name = "requestDataSource")
- @ConfigurationProperties(prefix = "spring.datasource")
- DataSource dataSource(MariaDB4jSpringService mariaDB4jSpringService,
- @Value("${mariaDB4j.databaseName}") String databaseName,
- @Value("${spring.datasource.username}") String datasourceUsername,
- @Value("${spring.datasource.password}") String datasourcePassword,
- @Value("${spring.datasource.driver-class-name}") String datasourceDriver) throws ManagedProcessException {
- // Create our database with default root user and no password
- mariaDB4jSpringService.getDB().createDB(databaseName);
-
- DBConfigurationBuilder config = mariaDB4jSpringService.getConfiguration();
-
- return DataSourceBuilder.create().username(datasourceUsername).password(datasourcePassword)
- .url(config.getURL(databaseName)).driverClassName(datasourceDriver).build();
- }
-
- @Primary
- @Bean(name = "requestEntityManagerFactory")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
- @Qualifier("requestDataSource") DataSource dataSource) {
- return builder.dataSource(dataSource).packages("org.onap.so.db.request.beans").persistenceUnit("requestDB")
- .build();
- }
-
- @Primary
- @Bean(name = "requestTransactionManager")
- public PlatformTransactionManager transactionManager(
- @Qualifier("requestEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
- return new JpaTransactionManager(entityManagerFactory);
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/HealthCheckHandlerTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/HealthCheckHandlerTest.java
deleted file mode 100644
index fe2bd0bb98..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/HealthCheckHandlerTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import static org.junit.Assert.*;
-import javax.ws.rs.core.Response;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.adapters.vfc.MSOVfcApplication;
-import org.springframework.boot.configurationprocessor.json.JSONException;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = MSOVfcApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class HealthCheckHandlerTest {
-
- @LocalServerPort
- private int port;
-
- TestRestTemplate restTemplate = new TestRestTemplate();
-
- HttpHeaders headers = new HttpHeaders();
-
-
- @Test
- public void testHealthcheck() throws JSONException {
-
- HttpEntity<String> entity = new HttpEntity<String>(null, headers);
-
- ResponseEntity<String> response =
- restTemplate.exchange(createURLWithPort("manage/health"), HttpMethod.GET, entity, String.class);
-
- assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
- }
-
- private String createURLWithPort(String uri) {
- return "http://localhost:" + port + uri;
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java
deleted file mode 100644
index 799283ddb4..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright (C) 2019 Verizon. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.onap.so.adapters.vfc.exceptions.ApplicationException;
-import org.onap.so.adapters.vfc.model.NSResourceInputParameter;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.onap.so.adapters.vfc.util.JsonUtil;
-import org.onap.so.adapters.vfc.util.RestfulUtil;
-import org.onap.so.db.request.beans.InstanceNfvoMapping;
-import org.onap.so.db.request.beans.OperationStatus;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
-import org.onap.so.db.request.data.repository.OperationStatusRepository;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.springframework.test.context.junit4.SpringRunner;
-import java.io.File;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringRunner.class)
-public class VfcManagerSol005Test {
- @InjectMocks
- VfcManagerSol005 vfcManagerSol005;
-
- @Mock
- InstanceNfvoMappingRepository instanceNfvoMappingRepository;
-
- @Mock
- ResourceOperationStatusRepository resourceOperationStatusRepository;
-
- @Mock
- OperationStatusRepository operationStatusRepository;
-
- @Mock
- RestfulUtil restfulUtil;
-
- OperationStatus operationStatus = new OperationStatus();
-
- InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
- RestfulResponse restfulResponse = new RestfulResponse();
- RestfulResponse vfcrestfulResponse = new RestfulResponse();
- NSResourceInputParameter nsResourceInputParameter = new NSResourceInputParameter();
- ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
-
- @Test
- public void createNs() throws ApplicationException, Exception {
- restfulResponse.setStatus(200);
- ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-
- File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
- String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
- file = new File(classLoader.getResource("json/aainfvoResponse.json").getFile());
- content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- restfulResponse.setResponseContent(content);
- // restfulResponse.setResponseContent("{\"nfvoId\":\"6ee79fe2-9579-475a-9bb9-20cf4358a19e\",\"name\":\"external_nfvo\",\"api-root\":\"xyz\",\"vendor\":\"vz\",\"version\":\"v1.0\",\"url\":\"http://sample.com/\",\"userName\":\"admin\",\"password\":\"sacjnasnc\"}");
- file = new File(classLoader.getResource("json/createNsSol005Response.json").getFile());
- content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- vfcrestfulResponse.setStatus(202);
- vfcrestfulResponse.setResponseContent(content);
- // vfcrestfulResponse.setResponseContent("{\"_links\": {\"heal\": {\"href\": \"\"}, \"instantiate\": {\"href\":
- // \"\"}, \"nestedNsInstances\": {\"href\": \"\"}, \"scale\": {\"href\": \"\"}, \"self\": {\"href\": \"\"},
- // \"terminate\": {\"href\": \"\"}, \"update\": {\"href\": \"\"}}, \"additionalAffinityOrAntiAffiniityRule\":
- // [{\"Scope\": \"\", \"affinityOrAntiAffiinty\": \"\", \"vnfInstanceId\": [], \"vnfProfileId\": [], \"vnfdId\":
- // []}], \"flavourId\": \"\", \"id\": \"c9f0a95e-dea0-4698-96e5-5a79bc5a233d\", \"nestedNsInstanceId\": [],
- // \"nsInstanceDescription\": \"\", \"nsInstanceName\": \"\", \"nsScaleStatus\": [{\"nsScaleLevelId\": \"\",
- // \"nsScalingAspectId\": \"\"}], \"nsState\": \"\", \"nsdId\": \"\", \"nsdInfoId\": \"\", \"pnfInfo\":
- // [{\"cpInfo\": [{\"cpInstanceId\": \"\", \"cpProtocolData\": {\"ipOverEthernet\": {\"ipAddresses\":
- // {\"addressRange\": {\"maxAddress\": \"\", \"minAddress\": \"\"}, \"fixedAddresses\": \"\",
- // \"numDynamicAddresses\": 1, \"subnetId\": \"\", \"type\": \"\"}, \"macAddress\": {}}, \"layerProtocol\":
- // \"IP_OVER_ETHERNET\"}, \"cpdId\": \"\"}], \"pnfId\": \"\", \"pnfName\": \"\", \"pnfProfileId\": \"\",
- // \"pnfdId\": \"\", \"pnfdInfoId\": \"\"}], \"sapInfo\": [{\"description\": \"\", \"id\": \"\", \"sapName\":
- // \"\", \"sapProtocolInfo\": {\"ipOverEthernet\": {\"ipAddresses\": {\"addressRange\": {\"maxAddress\": \"\",
- // \"minAddress\": \"\"}, \"fixedAddresses\": \"\", \"numDynamicAddresses\": 1, \"subnetId\": \"\", \"type\":
- // \"\"}, \"macAddress\": \"\"}, \"layerProtocol\": \"IP_OVER_ETHERNET\"}, \"sapdId\": \"\"}],
- // \"virtualLinkInfo\": [{\"id\": \"\", \"linkPort\": [{\"id\": \"\", \"resourceHandle\": {\"resourceId\": \"\",
- // \"resourceProviderId\": \"\", \"vimId\": \"\", \"vimLevelResourceType\": \"\"}}], \"nsVirtualLinkDescId\":
- // \"\", \"resourceHandle\": [{\"resourceId\": \"\", \"resourceProviderId\": \"\", \"vimId\": \"\",
- // \"vimLevelResourceType\": \"\"}]}], \"vnfInstance\": [{\"vnfInstanceId\": \"\", \"vnfProfileId\": \"\"}],
- // \"vnffgInfo\": [{\"id\": \"\", \"nfpInfo\": [{\"description\": \"\", \"id\": \"\", \"nfpName\": \"\",
- // \"nfpRule\": {\"destinationIpAddressPrefix\": \"\", \"destinationPortRange\": \"\", \"dscp\": \"\",
- // \"etherDestinationAddress\": \"\", \"etherSourceAddress\": \"\", \"etherType\": \"\", \"extendedCriteria\":
- // [{\"length\": 1, \"startingPoint\": 1, \"value\": \"\"}], \"protocol\": \"\", \"sourceIpAddressPrefix\":
- // \"\", \"sourcePortRange\": \"\", \"vlanTag\": []}, \"nfpState\": \"\", \"nfpdId\": \"\", \"nscpHandle\":
- // [{\"nsInstanceId\": \"\", \"nsSapInstanceId\": \"\", \"pnfExtCpInstanceId\": \"\", \"pnfInfoId\": \"\",
- // \"vnfExtCpInstanceId\": \"\", \"vnfInstanceId\": \"\"}], \"totalCp\": 1}], \"nsCpHandle\":
- // [{\"nsInstanceId\": \"\", \"nsSapInstanceId\": \"\", \"pnfExtCpInstanceId\": \"\", \"pnfInfoId\": \"\",
- // \"vnfExtCpInstanceId\": \"\", \"vnfInstanceId\": \"\"}], \"nsVirtualLinkInfoId\": [], \"pnfInfoId\": [],
- // \"vnfInstanceId\": [], \"vnffgdId\": \"\"}]}");
-
- resourceOperationStatus.setStatus("processing");
- resourceOperationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
- resourceOperationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
- resourceOperationStatus
- .setResourceTemplateUUID(nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
- when(instanceNfvoMappingRepository.save(instanceNfvoMapping)).thenReturn(instanceNfvoMapping);
- when(restfulUtil.getNfvoFromAAI("b1bb0ce7-2222-4fa7-95ed-4840d70a1101")).thenReturn(restfulResponse);
- when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyMap()))
- .thenReturn(vfcrestfulResponse);
- when(resourceOperationStatusRepository.save(resourceOperationStatus)).thenReturn(resourceOperationStatus);
- vfcManagerSol005.createNs(nsResourceInputParameter);
-
- }
-
- @Test
- public void terminateNs() throws Exception {
- instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
- instanceNfvoMapping.setPassword("sacjnasnc");
- instanceNfvoMapping.setUsername("admin");
- instanceNfvoMapping.setNfvoName("external_nfvo");
- instanceNfvoMapping.setEndpoint("http://sample.com/");
- instanceNfvoMapping.setApiRoot("xyz");
- String nsInstanceId = "c9f0a95e-dea0-4698-96e5-5a79bc5a233d";
- ClassLoader classLoader = ClassLoader.getSystemClassLoader();
- File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
- String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
- Map<String, String> header = new HashMap<>();
- header.put("Location", "http://192.168.10.57:5000/ns_lcm_op_ops/12204a12-7da2-4ddf-8c2f-992a1a1acebf");
- vfcrestfulResponse.setStatus(202);
- vfcrestfulResponse.setResponseContent(null);
- vfcrestfulResponse.setRespHeaderMap(header);
- when(instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId)).thenReturn(instanceNfvoMapping);
- when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
- .thenReturn(vfcrestfulResponse);
- vfcManagerSol005.terminateNs(nsResourceInputParameter.getNsOperationKey(), nsInstanceId);
- }
-
- @Test
- public void getNsProgress() throws Exception {
- String jobId = "12204a12-7da2-4ddf-8c2f-992a1a1acebf";
- instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
- instanceNfvoMapping.setPassword("sacjnasnc");
- instanceNfvoMapping.setUsername("admin");
- instanceNfvoMapping.setNfvoName("external_nfvo");
- instanceNfvoMapping.setEndpoint("http://sample.com/");
- instanceNfvoMapping.setApiRoot("xyz");
- instanceNfvoMapping.setJobId(jobId);
- ClassLoader classLoader = ClassLoader.getSystemClassLoader();
- File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
- String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
- operationStatus.setProgress("40");
- operationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
- operationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
- ResourceOperationStatus resourceOperationStatus =
- new ResourceOperationStatus(nsResourceInputParameter.getNsOperationKey().getServiceId(),
- nsResourceInputParameter.getNsOperationKey().getOperationId(),
- nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
- file = new File(classLoader.getResource("json/lcmOperRsp.json").getFile());
- content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- vfcrestfulResponse.setStatus(202);
- vfcrestfulResponse.setResponseContent(content);
- List<ResourceOperationStatus> resourceOperationStatuses = new ArrayList<>();
- resourceOperationStatuses.add(resourceOperationStatus);
- when(instanceNfvoMappingRepository.findOneByJobId(jobId)).thenReturn(instanceNfvoMapping);
- when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
- .thenReturn(vfcrestfulResponse);
- when(operationStatusRepository.findOneByServiceIdAndOperationId(
- nsResourceInputParameter.getNsOperationKey().getServiceId(),
- nsResourceInputParameter.getNsOperationKey().getOperationId())).thenReturn(operationStatus);
- when(resourceOperationStatusRepository.findByServiceIdAndOperationId(
- nsResourceInputParameter.getNsOperationKey().getServiceId(),
- nsResourceInputParameter.getNsOperationKey().getOperationId())).thenReturn(resourceOperationStatuses);
- when(operationStatusRepository.save(operationStatus)).thenReturn(operationStatus);
- vfcManagerSol005.getNsProgress(nsResourceInputParameter.getNsOperationKey(), jobId);
-
- }
-
- @Test
- public void instantiateNs() throws Exception {
- String nsInstanceId = "c9f0a95e-dea0-4698-96e5-5a79bc5a233d";
- ClassLoader classLoader = ClassLoader.getSystemClassLoader();
- File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
- String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
- nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
- instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
- instanceNfvoMapping.setPassword("sacjnasnc");
- instanceNfvoMapping.setUsername("admin");
- instanceNfvoMapping.setNfvoName("external_nfvo");
- instanceNfvoMapping.setEndpoint("http://sample.com/");
- instanceNfvoMapping.setApiRoot("xyz");
- resourceOperationStatus.setStatus("processing");
- resourceOperationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
- resourceOperationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
- resourceOperationStatus
- .setResourceTemplateUUID(nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
- Map<String, String> header = new HashMap<>();
- header.put("Location", "http://192.168.10.57:5000/ns_lcm_op_ops/12204a12-7da2-4ddf-8c2f-992a1a1acebf");
- vfcrestfulResponse.setStatus(202);
- vfcrestfulResponse.setResponseContent(null);
- vfcrestfulResponse.setRespHeaderMap(header);
- when(instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId)).thenReturn(instanceNfvoMapping);
- when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
- .thenReturn(vfcrestfulResponse);
- when(resourceOperationStatusRepository.save(resourceOperationStatus)).thenReturn(resourceOperationStatus);
- when(instanceNfvoMappingRepository.save(instanceNfvoMapping)).thenReturn(instanceNfvoMapping);
- vfcManagerSol005.instantiateNs(nsInstanceId, nsResourceInputParameter);
-
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerTest.java
deleted file mode 100644
index 08fe6187ea..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (c) 2019 Samsung. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.rest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.onap.so.adapters.vfc.constant.CommonConstant;
-import org.onap.so.adapters.vfc.model.NSResourceInputParameter;
-import org.onap.so.adapters.vfc.model.NsOperationKey;
-import org.onap.so.adapters.vfc.model.NsParameters;
-import org.onap.so.adapters.vfc.model.NsScaleParameters;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.onap.so.adapters.vfc.util.RestfulUtil;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
-import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
-import org.springframework.http.HttpStatus;
-import static org.junit.Assert.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public class VfcManagerTest {
-
- @Mock
- private ResourceOperationStatusRepository resourceOperationStatusRepository;
-
- @Mock
- private RestfulUtil restfulUtil;
-
- @InjectMocks
- @Spy
- private VfcManager vfcManager;
-
- @Test
- public void createNs() throws Exception {
-
- NSResourceInputParameter segInput = new NSResourceInputParameter();
- segInput.setNsOperationKey(new NsOperationKey());
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- restfulResponse.setResponseContent("{\"" + CommonConstant.NS_INSTANCE_ID + "\": \"someNsInstanceId\"}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- RestfulResponse response = vfcManager.createNs(segInput);
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- }
-
- @Test
- public void deleteNs() throws Exception {
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- restfulResponse.setResponseContent("{\"" + CommonConstant.NS_INSTANCE_ID + "\": \"someNsInstanceId\"}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- NsOperationKey nsOperationKey = new NsOperationKey();
-
- RestfulResponse response = vfcManager.deleteNs(nsOperationKey, "someNsInstanceId");
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- }
-
- @Test
- public void instantiateNs() throws Exception {
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- restfulResponse.setResponseContent("{\"" + CommonConstant.JOB_ID + "\": \"someJobId\"}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- NsParameters nsParameters = new NsParameters();
- NSResourceInputParameter segInput = new NSResourceInputParameter();
- segInput.setNsParameters(nsParameters);
- segInput.setNsOperationKey(new NsOperationKey());
-
- RestfulResponse response = vfcManager.instantiateNs("someNsInstanceId", segInput);
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- }
-
- @Test
- public void terminateNs() throws Exception {
-
- NsOperationKey nsOperationKey = new NsOperationKey();
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- restfulResponse.setResponseContent("{\"" + CommonConstant.JOB_ID + "\": \"someJobId\"}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- RestfulResponse response = vfcManager.terminateNs(nsOperationKey, "someNsInstanceId");
- assertEquals(HttpStatus.OK.value(), response.getStatus());
- }
-
- @Test
- public void getNsProgress() throws Exception {
-
- NsOperationKey nsOperationKey = new NsOperationKey();
- ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- restfulResponse.setResponseContent(
- "{\"" + CommonConstant.JOB_ID + "\": \"someJobId\", " + "\"responseDescriptor\" : {}}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- when(resourceOperationStatusRepository.findOne(any()))
- .thenReturn(java.util.Optional.ofNullable(resourceOperationStatus));
-
- RestfulResponse response = vfcManager.getNsProgress(nsOperationKey, "someJobId");
- assertEquals(HttpStatus.OK.value(), response.getStatus());
- }
-
- @Test
- public void scaleNs() throws Exception {
-
- ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
- NSResourceInputParameter segInput = new NSResourceInputParameter();
- NsScaleParameters nsScaleParameters = new NsScaleParameters();
- segInput.setNsScaleParameters(nsScaleParameters);
-
- RestfulResponse restfulResponse = new RestfulResponse();
- restfulResponse.setStatus(HttpStatus.OK.value());
- segInput.setNsOperationKey(new NsOperationKey());
- restfulResponse.setResponseContent("{\"" + CommonConstant.JOB_ID + "\": \"someJobId\"}");
- when(restfulUtil.send(any(), any(), any())).thenReturn(restfulResponse);
-
- when(resourceOperationStatusRepository.findOne(any()))
- .thenReturn(java.util.Optional.ofNullable(resourceOperationStatus));
-
- RestfulResponse response = vfcManager.scaleNs("someNsInstanceId", segInput);
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java
deleted file mode 100644
index 4b6baa5cf4..0000000000
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (c) 2019 Samsung. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.vfc.util;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.Header;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.StatusLine;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.onap.so.adapters.vfc.model.RestfulResponse;
-import org.springframework.http.HttpStatus;
-import javax.ws.rs.HttpMethod;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public class RestfulUtilTest {
-
- @InjectMocks
- @Spy
- private RestfulUtil restfulUtil;
-
- @Mock
- private HttpClient client;
-
- private HttpEntity httpEntity;
- private HttpResponse httpResponse;
- private StatusLine statusLine;
- private Header httpResponseHeader;
-
- @Before
- public void setUp() {
- httpEntity = mock(HttpEntity.class);
- httpResponse = mock(HttpResponse.class);
- statusLine = mock(StatusLine.class);
- httpResponseHeader = mock(Header.class);
- }
-
- private void sendInit() throws IOException {
-
- Header[] headerList = new BasicHeader[2];
- headerList[0] = new BasicHeader("Content-Type", "application/json");
- headerList[1] = new BasicHeader("cache-control", "no-cache");
- doReturn("https://testHost/").when(restfulUtil).getMsbHost();
-
- when(statusLine.getStatusCode()).thenReturn(HttpStatus.OK.value());
- when(httpResponse.getStatusLine()).thenReturn(statusLine);
- when(httpResponse.getEntity()).thenReturn(httpEntity);
- when(httpResponse.getAllHeaders()).thenReturn(headerList);
- }
-
- @Test
- public void sendGet() throws Exception {
-
- sendInit();
-
- ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("GET").getBytes());
- when(client.execute(any(HttpGet.class))).thenReturn(httpResponse);
- when(httpEntity.getContent()).thenReturn(responseStream);
-
- RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.GET, "some request content");
-
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- assertEquals("GET", restfulResponse.getResponseContent());
-
- }
-
- @Test
- public void sendPost() throws Exception {
-
- sendInit();
-
-
- ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("POST").getBytes());
- when(client.execute(any(HttpPost.class))).thenReturn(httpResponse);
- when(httpEntity.getContent()).thenReturn(responseStream);
-
- RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.POST, "some request content");
-
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- assertEquals("POST", restfulResponse.getResponseContent());
-
- }
-
- @Test
- public void sendPut() throws Exception {
-
- sendInit();
-
- ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("PUT").getBytes());
- when(client.execute(any(HttpPut.class))).thenReturn(httpResponse);
- when(httpEntity.getContent()).thenReturn(responseStream);
-
- RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.PUT, "some request content");
-
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- assertEquals("PUT", restfulResponse.getResponseContent());
-
- }
-
- @Test
- public void sendDelete() throws Exception {
-
- sendInit();
-
- ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("DELETE").getBytes());
- when(client.execute(any(HttpDelete.class))).thenReturn(httpResponse);
- when(httpEntity.getContent()).thenReturn(responseStream);
-
- RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.DELETE, "some request content");
-
- assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus());
- assertEquals("DELETE", restfulResponse.getResponseContent());
-
- }
-
- @Test
- public void sendOptions() throws Exception {
-
- doReturn("https://testHost/").when(restfulUtil).getMsbHost();
-
- RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.OPTIONS, "some request content");
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR.value(), restfulResponse.getStatus());
- assertEquals("Error processing request to VFC", restfulResponse.getResponseContent());
-
- }
-
-}
diff --git a/adapters/mso-vfc-adapter/src/test/resources/application-test.yaml b/adapters/mso-vfc-adapter/src/test/resources/application-test.yaml
deleted file mode 100644
index b43d382410..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/application-test.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-server:
- port: 8080
- tomcat:
- max-threads: 50
-ssl-enable: false
-mso:
- adapters:
- requestDb:
- auth: Basic YnBlbDptc28tZGItMTUwNyE=
- endpoint: http://localhost:8081
- logPath: logs
- site-name: localSite
- infra-requests:
- archived:
- period: 1
-spring:
- datasource:
- jdbc-url: jdbc:mariadb://localhost:3307/requestdb
- username: root
- password: password
- driver-class-name: org.mariadb.jdbc.Driver
- initialize: true
- initialization-mode: never
- jpa:
- generate-ddl: false
- show-sql: false
- hibernate:
- ddl-auto: validate
- naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
- enable-lazy-load-no-trans: true
- database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- security:
- usercredentials:
- -
- username: test
- password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
- role: BPEL-Client
-mariaDB4j:
- dataDir:
- port: 3307
- databaseName: requestdb
-
-#Actuator
-management:
- endpoints:
- web:
- base-path: /manage
- server:
- servlet:
- context-path: /manage
- metrics:
- se-global-registry: false
- export:
- prometheus:
- enabled: true # Whether exporting of metrics to Prometheus is enabled.
- step: 1m # Step size (i.e. reporting frequency) to use.
-
-
-flyway:
- baseline-on-migrate: false
- url: jdbc:mariadb://localhost:3307/requestdb
- user: root
- password: password
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/LICENSE.txt b/adapters/mso-vfc-adapter/src/test/resources/json/LICENSE.txt
deleted file mode 100644
index bc40e66b0b..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */ \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json b/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json
deleted file mode 100644
index 35047a9c21..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "nfvoId":"6ee79fe2-9579-475a-9bb9-20cf4358a19e",
- "name":"external_nfvo",
- "api-root":"xyz",
- "vendor":"vz",
- "version":"v1.0",
- "url":"http://sample.com/",
- "userName":"admin",
- "password":"sacjnasnc"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json
deleted file mode 100644
index aec8ae809d..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "nsServiceName":"vcpe_e2e_vnf_test2",
- "nsServiceDescription":"null",
- "nsServiceModelUUID":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
- "nsOperationKey":{
- "globalSubscriberId":"Demonstration",
- "serviceType":"vCPE",
- "serviceId":"996fadbb-e806-4a19-b0e5-3454ad6ac29e",
- "operationId":"1f1dd6b2-b027-4008-a9df-3b6c8274fb24",
- "nodeTemplateUUID":"4d3a835c-29c8-4a63-83a4-50de5f7ffe16"
- },
- "nsParameters":{
- "locationConstraints":[
- {
- "locationConstraints":{
- "vimId":"CloudOwner_regionOne"
- },
- "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1101"
- },
- {
- "locationConstraints":{
- "vimId":"CloudOwner_regionOne"
- },
- "vnfProfileId":"0408f076-e6c0-4c82-9940-272fddbb82de"
- },
- {
- "locationConstraints":{
- "vimId":"CloudOwner_regionOne"
- },
- "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1100"
- },
- {
- "locationConstraints":{
- "vimId":"CloudOwner_regionOne"
- },
- "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1102"
- },
- {
- "locationConstraints":{
- "vimId":"CloudOwner_regionOne"
- },
- "vnfProfileId":"3fca3543-07f5-492f-812c-ed462e4f94f4"
- }
- ],
- "additionalParamForNs":{
- "orchestrator":"",
- "nfvo":"b1bb0ce7-2222-4fa7-95ed-4840d70a1101",
- "nf_naming":"true",
- "multi_stage_design":"false",
- "availability_zone_max_count":"1",
- "xyz":"123",
- "nsd0_providing_service_invariant_uuid":"12204a12-7da2-4ddf-8c2f-992a1a1acebf",
- "nsd0_providing_service_uuid":"5791dbeb-19d4-43e8-bf44-5b327ccf6bca"
- }
- }
-}
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsRsp.json
deleted file mode 100644
index ccd1d66909..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/createNsRsp.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "nsInstanceId": "9b9f02c0-298b-458a-bc9c-be3692e4f354"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json
deleted file mode 100644
index 938969a87f..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json
+++ /dev/null
@@ -1,210 +0,0 @@
-{
- "_links":{
- "heal":{
- "href":""
- },
- "instantiate":{
- "href":""
- },
- "nestedNsInstances":{
- "href":""
- },
- "scale":{
- "href":""
- },
- "self":{
- "href":""
- },
- "terminate":{
- "href":""
- },
- "update":{
- "href":""
- }
- },
- "additionalAffinityOrAntiAffiniityRule":[
- {
- "Scope":"",
- "affinityOrAntiAffiinty":"",
- "vnfInstanceId":[
-
- ],
- "vnfProfileId":[
-
- ],
- "vnfdId":[
-
- ]
- }
- ],
- "flavourId":"",
- "id":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
- "nestedNsInstanceId":[
-
- ],
- "nsInstanceDescription":"",
- "nsInstanceName":"",
- "nsScaleStatus":[
- {
- "nsScaleLevelId":"",
- "nsScalingAspectId":""
- }
- ],
- "nsState":"",
- "nsdId":"",
- "nsdInfoId":"",
- "pnfInfo":[
- {
- "cpInfo":[
- {
- "cpInstanceId":"",
- "cpProtocolData":{
- "ipOverEthernet":{
- "ipAddresses":{
- "addressRange":{
- "maxAddress":"",
- "minAddress":""
- },
- "fixedAddresses":"",
- "numDynamicAddresses":1,
- "subnetId":"",
- "type":""
- },
- "macAddress":{
-
- }
- },
- "layerProtocol":"IP_OVER_ETHERNET"
- },
- "cpdId":""
- }
- ],
- "pnfId":"",
- "pnfName":"",
- "pnfProfileId":"",
- "pnfdId":"",
- "pnfdInfoId":""
- }
- ],
- "sapInfo":[
- {
- "description":"",
- "id":"",
- "sapName":"",
- "sapProtocolInfo":{
- "ipOverEthernet":{
- "ipAddresses":{
- "addressRange":{
- "maxAddress":"",
- "minAddress":""
- },
- "fixedAddresses":"",
- "numDynamicAddresses":1,
- "subnetId":"",
- "type":""
- },
- "macAddress":""
- },
- "layerProtocol":"IP_OVER_ETHERNET"
- },
- "sapdId":""
- }
- ],
- "virtualLinkInfo":[
- {
- "id":"",
- "linkPort":[
- {
- "id":"",
- "resourceHandle":{
- "resourceId":"",
- "resourceProviderId":"",
- "vimId":"",
- "vimLevelResourceType":""
- }
- }
- ],
- "nsVirtualLinkDescId":"",
- "resourceHandle":[
- {
- "resourceId":"",
- "resourceProviderId":"",
- "vimId":"",
- "vimLevelResourceType":""
- }
- ]
- }
- ],
- "vnfInstance":[
- {
- "vnfInstanceId":"",
- "vnfProfileId":""
- }
- ],
- "vnffgInfo":[
- {
- "id":"",
- "nfpInfo":[
- {
- "description":"",
- "id":"",
- "nfpName":"",
- "nfpRule":{
- "destinationIpAddressPrefix":"",
- "destinationPortRange":"",
- "dscp":"",
- "etherDestinationAddress":"",
- "etherSourceAddress":"",
- "etherType":"",
- "extendedCriteria":[
- {
- "length":1,
- "startingPoint":1,
- "value":""
- }
- ],
- "protocol":"",
- "sourceIpAddressPrefix":"",
- "sourcePortRange":"",
- "vlanTag":[
-
- ]
- },
- "nfpState":"",
- "nfpdId":"",
- "nscpHandle":[
- {
- "nsInstanceId":"",
- "nsSapInstanceId":"",
- "pnfExtCpInstanceId":"",
- "pnfInfoId":"",
- "vnfExtCpInstanceId":"",
- "vnfInstanceId":""
- }
- ],
- "totalCp":1
- }
- ],
- "nsCpHandle":[
- {
- "nsInstanceId":"",
- "nsSapInstanceId":"",
- "pnfExtCpInstanceId":"",
- "pnfInfoId":"",
- "vnfExtCpInstanceId":"",
- "vnfInstanceId":""
- }
- ],
- "nsVirtualLinkInfoId":[
-
- ],
- "pnfInfoId":[
-
- ],
- "vnfInstanceId":[
-
- ],
- "vnffgdId":""
- }
- ]
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json
deleted file mode 100644
index ac095e6aa3..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350",
- "serviceType":"service",
- "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351",
- "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352",
- "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json
deleted file mode 100644
index 047c81081e..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "nsServiceName":"vIMS",
- "nsServiceDescription":"vIMS NS",
- "nsOperationKey":{
- "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350",
- "serviceType":"service",
- "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351",
- "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352",
- "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353"
- },
- "nsParameters":{
- "locationConstraints":[
- {
- "vnfProfileId":"zte-CSCF-1.0",
- "locationConstraints":{
- "vimId":"1"
- }
- }
- ],
- "additionalParamForNs":{
- "externalDataNetworkName":"Flow_out_net",
- "m6000_mng_ip":"192.168.20.2",
- "externalCompanyFtpDataNetworkName":"Flow_out_net",
- "externalPluginManageNetworkName":"plugin_net_2014",
- "externalManageNetworkName":"mng_net_2017",
- "sfc_data_network":"sfc_data_net_2016",
- "NatIpRange":"210.1.1.10-210.1.1.20",
- "location":"4050083f-465f-4838-af1e-47a545222ad0",
- "sdncontroller":"9b9f02c0-298b-458a-bc9c-be3692e4f35e"
- }
- }
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsRsp.json
deleted file mode 100644
index 51e4d010d0..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsRsp.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "jobId":"1"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json
deleted file mode 100644
index 111afc1a7c..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "id":"12204a12-7da2-4ddf-8c2f-992a1a1acebf",
- "lcmOperationType":"INSTANTIATE",
- "nsInstanceId":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
- "operationState":"PROCESSING",
- "statusEnteredTime":"Time"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/queryJobReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/queryJobReq.json
deleted file mode 100644
index ac095e6aa3..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/queryJobReq.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350",
- "serviceType":"service",
- "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351",
- "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352",
- "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/queryJobRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/queryJobRsp.json
deleted file mode 100644
index 9238b472a7..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/queryJobRsp.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "jobId": "1",
- "responseDescriptor": {
- "progress": "100",
- "status": "finished",
- "statusDescription": "OMC VMs are decommissioned in VIM",
- "errorCode": "",
- "responseId": "22"
- }
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json
deleted file mode 100644
index ac095e6aa3..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350",
- "serviceType":"service",
- "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351",
- "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352",
- "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsRsp.json
deleted file mode 100644
index 51e4d010d0..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsRsp.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "jobId":"1"
-} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/logback-test.xml b/adapters/mso-vfc-adapter/src/test/resources/logback-test.xml
deleted file mode 100644
index c2e0098f5a..0000000000
--- a/adapters/mso-vfc-adapter/src/test/resources/logback-test.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<!-- ============LICENSE_START=======================================================
- ONAP SO ================================================================================
- Copyright (C) 2017 Huawei Intellectual Property. All rights reserved. ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License. You may obtain a copy
- of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
- language governing permissions and limitations under the License. ============LICENSE_END========================================================= -->
-
-<configuration>
-
-
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}||%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}||%X{Timer}|%msg%n</pattern>
- </encoder>
- </appender>
-
-
- <logger name="com.att.eelf.audit" level="info" additivity="false">
- <appender-ref ref="STDOUT" />
- </logger>
-
- <logger name="com.att.eelf.metrics" level="info" additivity="false">
- <appender-ref ref="STDOUT" />
- </logger>
-
- <logger name="com.att.eelf.error" level="trace" additivity="false">
- <appender-ref ref="STDOUT" />
- </logger>
- <logger name="org.onap" level="${so.log.level:-DEBUG}"
- additivity="false">
- <appender-ref ref="STDOUT" />
- </logger>
- <root level="info">
- <appender-ref ref="STDOUT" />
- </root>
-
-
-</configuration>
diff --git a/adapters/pom.xml b/adapters/pom.xml
index 49f25b8102..ee480215f3 100644
--- a/adapters/pom.xml
+++ b/adapters/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>adapters</artifactId>
@@ -19,12 +19,7 @@
<module>mso-sdnc-adapter</module>
<module>mso-requests-db-adapter</module>
<module>mso-catalog-db-adapter</module>
- <module>mso-vfc-adapter</module>
- <module>mso-cnf-adapter</module>
<module>mso-openstack-adapters</module>
- <module>etsi-sol003-adapter</module>
- <module>mso-nssmf-adapter</module>
- <module>mso-oof-adapter</module>
<module>so-appc-orchestrator</module>
</modules>
diff --git a/adapters/so-appc-orchestrator/pom.xml b/adapters/so-appc-orchestrator/pom.xml
index 68814fc075..f01288f1b4 100644
--- a/adapters/so-appc-orchestrator/pom.xml
+++ b/adapters/so-appc-orchestrator/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>adapters</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so.adapters</groupId>
@@ -143,38 +143,17 @@
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-prometheus</artifactId>
- </dependency>
- <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-external-task-client</artifactId>
- <version>1.1.1</version>
+ <version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.onap.so</groupId>
diff --git a/asdc-controller/pom.xml b/asdc-controller/pom.xml
index 1bd0389cba..447dbfdf30 100644
--- a/asdc-controller/pom.xml
+++ b/asdc-controller/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<groupId>org.onap.so</groupId>
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java
index 6497a99e5e..8fe01caa46 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/VfResourceStructure.java
@@ -68,7 +68,7 @@ public class VfResourceStructure extends ResourceStructure {
/**
* The list of VfModulesMetadata defined for this resource.
*/
- private List<IVfModuleData> vfModulesMetadataList;
+ private List<VfModuleMetaData> vfModulesMetadataList;
private VnfResource catalogVnfResource;
@@ -203,7 +203,7 @@ public class VfResourceStructure extends ResourceStructure {
this.catalogService = catalogService;
}
- public List<IVfModuleData> decodeVfModuleArtifact(byte[] arg0) {
+ public List<VfModuleMetaData> decodeVfModuleArtifact(byte[] arg0) {
try {
return new ObjectMapper().readValue(arg0, new TypeReference<List<VfModuleMetaData>>() {});
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java b/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
index 6908fe4eda..fa17e727a5 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
@@ -35,6 +35,7 @@ import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
import org.onap.sdc.toscaparser.api.elements.Metadata;
import org.onap.so.asdc.installer.IVfModuleData;
import org.onap.so.asdc.installer.ToscaResourceStructure;
+import org.onap.so.asdc.installer.VfModuleMetaData;
import org.onap.so.asdc.installer.heat.ToscaResourceInstaller;
public class ASDCNotificationLogging {
@@ -850,7 +851,7 @@ public class ASDCNotificationLogging {
return buffer.toString();
}
- public static String dumpVfModuleMetaDataList(List<IVfModuleData> moduleMetaDataList) {
+ public static String dumpVfModuleMetaDataList(List<VfModuleMetaData> moduleMetaDataList) {
if (moduleMetaDataList == null) {
return null;
}
diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java
index 6fd853915e..3ac32d616f 100644
--- a/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java
+++ b/asdc-controller/src/test/java/org/onap/so/asdc/util/ASDCNotificationLoggingTest.java
@@ -115,7 +115,7 @@ public class ASDCNotificationLoggingTest {
@Test
public void dumpVfModuleMetaDataListTest() {
INotificationData asdcNotification = iNotificationDataObject();
- List<IVfModuleData> list = new ArrayList<>();
+ List<VfModuleMetaData> list = new ArrayList<>();
list.add(new VfModuleMetaData());
String result = null;
try {
diff --git a/bpmn/MSOCommonBPMN/pom.xml b/bpmn/MSOCommonBPMN/pom.xml
index c1c5bf0170..60a689c04a 100644
--- a/bpmn/MSOCommonBPMN/pom.xml
+++ b/bpmn/MSOCommonBPMN/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>MSOCommonBPMN</artifactId>
<name>MSOCommonBPMN</name>
@@ -182,7 +182,6 @@
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
- <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -340,7 +339,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/bpmn/MSOCoreBPMN/pom.xml b/bpmn/MSOCoreBPMN/pom.xml
index 5285e4e79f..34790bb496 100644
--- a/bpmn/MSOCoreBPMN/pom.xml
+++ b/bpmn/MSOCoreBPMN/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MSOCoreBPMN</artifactId>
diff --git a/bpmn/mso-infrastructure-bpmn/pom.xml b/bpmn/mso-infrastructure-bpmn/pom.xml
index 4f7ceca9b9..1df4a26246 100644
--- a/bpmn/mso-infrastructure-bpmn/pom.xml
+++ b/bpmn/mso-infrastructure-bpmn/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mso-infrastructure-bpmn</artifactId>
@@ -201,13 +201,19 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-bom</artifactId>
+ <version>${camunda.version}</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
- <version>${camunda.springboot.version}</version>
<exclusions>
<exclusion>
<groupId>org.camunda.bpmn</groupId>
@@ -222,7 +228,6 @@
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
- <version>${camunda.springboot.version}</version>
<exclusions>
<exclusion>
<groupId>org.camunda.bpmn</groupId>
@@ -232,10 +237,6 @@
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
@@ -246,20 +247,6 @@
<optional>true</optional>
</dependency>
<dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>so-bpmn-infrastructure-common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.onap.so</groupId>
<artifactId>MSOCommonBPMN</artifactId>
<version>${project.version}</version>
@@ -294,31 +281,21 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.onap.so</groupId>
- <artifactId>so-bpmn-tasks</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
<artifactId>cxf-logging</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.extension.mockito</groupId>
<artifactId>camunda-bpm-mockito</artifactId>
- <version>3.2.1</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -335,10 +312,6 @@
</dependency>
<dependency>
<groupId>org.onap.aaf.authz</groupId>
- <artifactId>aaf-cadi-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.onap.aaf.authz</groupId>
<artifactId>aaf-cadi-aaf</artifactId>
<exclusions>
<exclusion>
@@ -352,14 +325,9 @@
</exclusions>
</dependency>
<dependency>
- <groupId>org.onap.aaf.authz</groupId>
- <artifactId>aaf-auth-client</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.aaf.authz</groupId>
- <artifactId>aaf-misc-env</artifactId>
- <scope>runtime</scope>
+ <groupId>org.camunda.bpm.springboot</groupId>
+ <artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.onap.aaf.authz</groupId>
diff --git a/bpmn/pom.xml b/bpmn/pom.xml
index 4193ba1287..9d2231f936 100644
--- a/bpmn/pom.xml
+++ b/bpmn/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>bpmn</artifactId>
@@ -15,7 +15,7 @@
<packaging>pom</packaging>
<properties>
- <camunda.version>7.10.0</camunda.version>
+ <camunda.version>7.14.0</camunda.version>
<camunda.bpm.assert.version>1.2</camunda.bpm.assert.version>
<camunda.bpm.webapp.artifact>camunda-webapp-jboss-standalone</camunda.bpm.webapp.artifact>
<h2.version>1.4.196</h2.version>
@@ -71,7 +71,6 @@
</dependency>
</dependencies>
</dependencyManagement>
-
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
@@ -92,5 +91,4 @@
<version>${project.version}</version>
</dependency>
</dependencies>
-
</project>
diff --git a/bpmn/so-bpmn-building-blocks/pom.xml b/bpmn/so-bpmn-building-blocks/pom.xml
index 5c4cd6d2fa..dbd954ca64 100644
--- a/bpmn/so-bpmn-building-blocks/pom.xml
+++ b/bpmn/so-bpmn-building-blocks/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-bpmn-building-blocks</artifactId>
@@ -79,28 +79,35 @@
</plugins>
</pluginManagement>
</build>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-bom</artifactId>
+ <version>${camunda.version}</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine</artifactId>
- <version>${camunda.version}</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.extension.mockito</groupId>
<artifactId>camunda-bpm-mockito</artifactId>
- <version>3.2.1</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -148,9 +155,8 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
-
</dependencies>
</project>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn
index 3448e8d577..41b841f05d 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn
@@ -1,19 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.1.1">
<bpmn:process id="VnfAdapter" name="Vnf Adapter" isExecutable="true">
<bpmn:startEvent id="VnfAdapter_Start">
<bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
</bpmn:startEvent>
- <bpmn:subProcess id="VnfAdapter_Error" name="Sub Process Error" triggeredByEvent="true">
- <bpmn:endEvent id="Error_End" name="End">
- <bpmn:incoming>SequenceFlow_1abat8l</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:startEvent id="Error_Start" name="Start">
- <bpmn:outgoing>SequenceFlow_1abat8l</bpmn:outgoing>
- <bpmn:errorEventDefinition />
- </bpmn:startEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1abat8l" sourceRef="Error_Start" targetRef="Error_End" />
- </bpmn:subProcess>
<bpmn:sequenceFlow id="SequenceFlow_1xr6chl" sourceRef="VnfAdapter_Start" targetRef="PreProcessRequest" />
<bpmn:endEvent id="VnfAdapter_End">
<bpmn:incoming>SequenceFlow_1ivhukd</bpmn:incoming>
@@ -43,15 +33,27 @@
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfAdapter">
- <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="VnfAdapter_Start">
- <dc:Bounds x="156" y="103" width="36" height="36" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0j1zvis_di" bpmnElement="SequenceFlow_0j1zvis">
+ <di:waypoint x="563" y="121" />
+ <di:waypoint x="657" y="121" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="219" y="393" width="24" height="12" />
+ <dc:Bounds x="622" y="354" width="90" height="12" />
</bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_17szae7_di" bpmnElement="VnfAdapter_Error" isExpanded="true">
- <dc:Bounds x="396" y="275" width="233" height="135" />
- </bpmndi:BPMNShape>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0qaaf5k_di" bpmnElement="SequenceFlow_0qaaf5k">
+ <di:waypoint x="372" y="121" />
+ <di:waypoint x="463" y="121" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="429.5" y="354" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ivhukd_di" bpmnElement="SequenceFlow_1ivhukd">
+ <di:waypoint x="757" y="121" />
+ <di:waypoint x="837" y="121" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="809" y="354" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1xr6chl_di" bpmnElement="SequenceFlow_1xr6chl">
<di:waypoint x="192" y="121" />
<di:waypoint x="272" y="121" />
@@ -59,27 +61,12 @@
<dc:Bounds x="244" y="360" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="EndEvent_16vfqpk_di" bpmnElement="Error_End">
- <dc:Bounds x="549" y="319" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="558" y="359" width="20" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="StartEvent_1t3ep1m_di" bpmnElement="Error_Start">
- <dc:Bounds x="434" y="319" width="36" height="36" />
+ <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="VnfAdapter_Start">
+ <dc:Bounds x="156" y="103" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="441" y="359" width="24" height="14" />
+ <dc:Bounds x="219" y="393" width="24" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1abat8l_di" bpmnElement="SequenceFlow_1abat8l">
- <di:waypoint x="470" y="337" />
- <di:waypoint x="509" y="337" />
- <di:waypoint x="509" y="337" />
- <di:waypoint x="549" y="337" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="536" y="591" width="90" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="VnfAdapter_End">
<dc:Bounds x="837" y="103" width="36" height="36" />
<bpmndi:BPMNLabel>
@@ -92,30 +79,9 @@
<bpmndi:BPMNShape id="ServiceTask_1yomr79_di" bpmnElement="PostProcessResponse">
<dc:Bounds x="657" y="81" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1ivhukd_di" bpmnElement="SequenceFlow_1ivhukd">
- <di:waypoint x="757" y="121" />
- <di:waypoint x="837" y="121" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="809" y="354" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="CallActivity_0n6wnin_di" bpmnElement="Call_openstackAdapterTask">
<dc:Bounds x="463" y="81" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0qaaf5k_di" bpmnElement="SequenceFlow_0qaaf5k">
- <di:waypoint x="372" y="121" />
- <di:waypoint x="463" y="121" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="429.5" y="354" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0j1zvis_di" bpmnElement="SequenceFlow_0j1zvis">
- <di:waypoint x="563" y="121" />
- <di:waypoint x="657" y="121" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="622" y="354" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-common/pom.xml b/bpmn/so-bpmn-infrastructure-common/pom.xml
index ebc0264c7e..90f9a57191 100644
--- a/bpmn/so-bpmn-infrastructure-common/pom.xml
+++ b/bpmn/so-bpmn-infrastructure-common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-bpmn-infrastructure-common</artifactId>
@@ -131,13 +131,11 @@
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -256,7 +254,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -269,7 +267,6 @@
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
index 9ccc6951ea..897cdfcd7b 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
@@ -49,7 +49,8 @@ import org.slf4j.LoggerFactory
import com.fasterxml.jackson.databind.ObjectMapper
import com.google.gson.JsonObject
-
+import groovy.json.JsonSlurper
+import com.google.gson.Gson
/**
* Internal AN NSSMF to handle NSSI Activation/Deactivation
@@ -78,16 +79,26 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
private static final String ACTIVATE = "activateInstance"
private static final String DEACTIVATE = "deactivateInstance"
- private static final String VENDOR_ONAP = "ONAP"
+ private static final String VENDOR_ONAP = "ONAP_internal"
+
+ enum orchStatusMap {
+ activateInstance("activated"),
+ deactivateInstance("deactivated")
+
+ private String value;
+
+ private orchStatusMap(String value) {
+ this.value = value;
+ }
+ }
- Map<String,String> orchStatusMap = new HashMap<>()
@Override
public void preProcessRequest(DelegateExecution execution) {
logger.debug("${Prefix} - Start preProcessRequest")
String sliceParams = execution.getVariable("sliceParams")
- String sNssaiList = jsonUtil.getJsonValue(sliceParams, "snssaiList")
+ List<String> sNssaiList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceParams, "snssaiList"))
String anSliceProfileId = jsonUtil.getJsonValue(sliceParams, "sliceProfileId")
String nsiId = execution.getVariable("nsiId")
String globalSubscriberId = execution.getVariable("globalSubscriberId")
@@ -95,7 +106,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String anNssiId = execution.getVariable("serviceInstanceID")
String operationType = execution.getVariable("operationType")
- if(isBlank(sNssaiList) || isBlank(anSliceProfileId) || isBlank(nsiId)) {
+ if((sNssaiList.empty) || isBlank(anSliceProfileId) || isBlank(nsiId)) {
String msg = "Input fields cannot be null : Mandatory attributes : [snssaiList, sliceProfileId, nsiId]"
logger.debug(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
@@ -112,9 +123,6 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
execution.setVariable("nsiId", nsiId)
execution.setVariable("anNssiId", anNssiId)
- orchStatusMap.put(ACTIVATE, "activated")
- orchStatusMap.put(DEACTIVATE, "deactivated")
-
logger.debug("${Prefix} - Preprocessing completed with sliceProfileId : ${anSliceProfileId} , nsiId : ${nsiId} , nssiId : ${anNssiId}")
}
@@ -145,11 +153,12 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
ServiceInstance sliceProfileInstance = execution.getVariable(KEY_SLICE_PROFILE)
String orchStatus = sliceProfileInstance.getOrchestrationStatus()
String operationType = execution.getVariable("operationType")
- if(orchStatusMap.get(operationType).equalsIgnoreCase(orchStatus)) {
- execution.setVariable("shouldChangeSPStatus", true)
- }else {
+ if(orchStatusMap.valueOf(operationType).toString().equalsIgnoreCase(orchStatus)) {
execution.setVariable("shouldChangeSPStatus", false)
- }
+ }else {
+ execution.setVariable("shouldChangeSPStatus", true)
+
+ }
logger.debug("${Prefix} - SPOrchStatus : ${orchStatus}")
}
@@ -167,10 +176,10 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String orchStatus = sliceProfileInstance.getOrchestrationStatus()
String operationType = execution.getVariable("operationType")
- if(orchStatusMap.get(operationType).equalsIgnoreCase(orchStatus)) {
- execution.setVariable("shouldChangeAN_NF_SPStatus", true)
- }else {
+ if(orchStatusMap.valueOf(operationType).toString().equalsIgnoreCase(orchStatus)) {
execution.setVariable("shouldChangeAN_NF_SPStatus", false)
+ }else {
+ execution.setVariable("shouldChangeAN_NF_SPStatus", true)
}
logger.debug("${Prefix} - getAnNfSPOrchStatus AN_NF SP ID:${anNfSPId} : ${orchStatus}")
}
@@ -181,7 +190,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String action = operationType.equalsIgnoreCase(ACTIVATE) ? "activate":"deactivate"
String anNfNssiId = execution.getVariable("anNfNssiId")
- String sNssai = execution.getVariable("sNssaiList")
+ List<String> sNssai = execution.getVariable("sNssaiList")
String reqId = execution.getVariable("msoRequestId")
String messageType = "SDNRActivateResponse"
StringBuilder callbackURL = new StringBuilder(UrnPropertiesReader.getVariable("mso.workflow.message.endpoint", execution))
@@ -190,7 +199,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
JsonObject input = new JsonObject()
input.addProperty("RANNFNSSIId", anNfNssiId)
input.addProperty("callbackURL", callbackURL.toString())
- input.addProperty("s-NSSAI", sNssai)
+ input.addProperty("s-NSSAI", sNssai.toString())
JsonObject Payload = new JsonObject()
Payload.addProperty("version", "1.0")
@@ -202,7 +211,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
wrapinput.addProperty("Action", action)
JsonObject CommonHeader = new JsonObject()
- CommonHeader.addProperty("TimeStamp", new Date(System.currentTimeMillis()).format("yyyy-MM-ddTHH:mm:ss.sss", TimeZone.getDefault()))
+ CommonHeader.addProperty("TimeStamp", new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss", TimeZone.getDefault()))
CommonHeader.addProperty("APIver", "1.0")
CommonHeader.addProperty("RequestID", reqId)
CommonHeader.addProperty("SubRequestID", "1")
@@ -211,18 +220,18 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
body.add("input", wrapinput)
JsonObject sdnrRequest = new JsonObject()
- Payload.add("input", input)
+ Payload.addProperty("input", input.toString())
wrapinput.add("Payload", Payload)
wrapinput.add("CommonHeader", CommonHeader)
body.add("input", wrapinput)
sdnrRequest.add("body", body)
String json = sdnrRequest.toString()
- execution.setVariable("sdnrRequest", sdnrRequest)
+ execution.setVariable("sdnrRequest", json)
execution.setVariable("SDNR_messageType", messageType)
execution.setVariable("SDNR_timeout", "PT10M")
- logger.debug("${Prefix} - prepareSdnrActivationRequest : SDNR Request : ${json}")
+ logger.debug("${Prefix} - Exit prepareSdnrActivationRequest ")
}
void processSdnrResponse(DelegateExecution execution) {
@@ -267,10 +276,10 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String orchStatus = sliceProfileInstance.getOrchestrationStatus()
String operationType = execution.getVariable("operationType")
- if(orchStatusMap.get(operationType).equalsIgnoreCase(orchStatus)) {
- execution.setVariable("shouldChangeTN_FH_SPStatus", true)
- }else {
+ if(orchStatusMap.valueOf(operationType).toString().equalsIgnoreCase(orchStatus)) {
execution.setVariable("shouldChangeTN_FH_SPStatus", false)
+ }else {
+ execution.setVariable("shouldChangeTN_FH_SPStatus", true)
}
logger.debug("${Prefix} Exit getTnFhSPOrchStatus TN_FH SP ID:${tnFhSPId} : ${orchStatus}")
@@ -283,9 +292,8 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String urlOpType = operationType.equalsIgnoreCase(ACTIVATE) ? "activation":"deactivation"
List<String> sNssaiList = execution.getVariable("sNssaiList")
- String snssai = sNssaiList != null ? sNssaiList.get(0) : ""
-
- String urlString = "/api/rest/provMns/v1/NSS/" + snssai + urlOpType
+ String snssai = sNssaiList.get(0)
+ String urlString = "/api/rest/provMns/v1/NSS/" + snssai + "/" + urlOpType
String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
if (nssmfResponse != null) {
String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
@@ -307,10 +315,10 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String orchStatus = sliceProfileInstance.getOrchestrationStatus()
String operationType = execution.getVariable("operationType")
- if(orchStatusMap.get(operationType).equalsIgnoreCase(orchStatus)) {
- execution.setVariable("shouldChangeTN_MH_SPStatus", true)
- }else {
+ if(orchStatusMap.valueOf(operationType).toString().equalsIgnoreCase(orchStatus)) {
execution.setVariable("shouldChangeTN_MH_SPStatus", false)
+ }else {
+ execution.setVariable("shouldChangeTN_MH_SPStatus", true)
}
logger.debug("${Prefix} Exit getTnMhSPOrchStatus TN_MH SP ID:${tnFhSPId} : ${orchStatus}")
}
@@ -322,9 +330,9 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String urlOpType = operationType.equalsIgnoreCase(ACTIVATE) ? "activation":"deactivation"
List<String> sNssaiList = execution.getVariable("sNssaiList")
- String snssai = sNssaiList != null ? sNssaiList.get(0) : ""
+ String snssai = sNssaiList.get(0)
- String urlString = "/api/rest/provMns/v1/NSS/" + snssai + urlOpType
+ String urlString = "/api/rest/provMns/v1/NSS/" + snssai + "/" + urlOpType
String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
if (nssmfResponse != null) {
String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
@@ -378,7 +386,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
String anSliceProfileId = execution.getVariable("anSliceProfileId")
updateOrchStatus(execution, anNssiId)
updateOrchStatus(execution, anSliceProfileId)
- logger.debug("${Prefix} Start updateANStatus")
+ logger.debug("${Prefix} Exit updateANStatus")
}
void prepareQueryJobStatus(DelegateExecution execution,String jobId,String networkType,String instanceId) {
@@ -463,7 +471,8 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
roStatus.setProgress(progress)
roStatus.setStatus(status)
roStatus.setStatusDescription(statusDescription)
- requestDBUtil.prepareUpdateResourceOperationStatus(execution, status)
+ requestDBUtil.prepareUpdateResourceOperationStatus(execution, roStatus)
+ logger.debug("${Prefix} Exit prepareUpdateJobStatus : ${statusDescription}")
}
@@ -567,20 +576,22 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
actDeactNssi.setSliceProfileId(relatedSPs.get(serviceFunction).getServiceInstanceId())
actDeactNssi.setSnssaiList(sNssaiList)
- EsrInfo esrInfo = new EsrInfo()
- esrInfo.setVendor(VENDOR_ONAP)
- esrInfo.setNetworkType("TN")
+ JsonObject esrInfo = new JsonObject()
+ esrInfo.addProperty("networkType", "tn")
+ esrInfo.addProperty("vendor", VENDOR_ONAP)
ServiceInfo serviceInfo = new ServiceInfo()
serviceInfo.setServiceInvariantUuid(tnNssi.getModelInvariantId())
serviceInfo.setServiceUuid(tnNssi.getModelVersionId())
serviceInfo.setGlobalSubscriberId(globalSubscriberId)
serviceInfo.setSubscriptionServiceType(subscriptionServiceType)
+ serviceInfo.setNssiId(nssiId)
JsonObject json = new JsonObject()
- json.addProperty("actDeActNssi", objectMapper.writeValueAsString(actDeactNssi))
- json.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
- json.addProperty("serviceInfo", objectMapper.writeValueAsString(serviceInfo))
+ Gson jsonConverter = new Gson()
+ json.add("actDeActNssi", jsonConverter.toJsonTree(actDeactNssi))
+ json.add("esrInfo", esrInfo)
+ json.add("serviceInfo", jsonConverter.toJsonTree(serviceInfo))
return json.toString()
}
diff --git a/bpmn/so-bpmn-infrastructure-flows/pom.xml b/bpmn/so-bpmn-infrastructure-flows/pom.xml
index a8f35986e7..fa45a415ee 100644
--- a/bpmn/so-bpmn-infrastructure-flows/pom.xml
+++ b/bpmn/so-bpmn-infrastructure-flows/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-bpmn-infrastructure-flows</artifactId>
@@ -14,7 +14,6 @@
<camunda.bpm.assert.version>2.0-alpha2</camunda.bpm.assert.version>
<assertj.core.version>1.7.0</assertj.core.version>
<grpc.version>1.17.1</grpc.version>
- <camunda.mockito.version>3.2.1</camunda.mockito.version>
</properties>
<build>
@@ -54,15 +53,9 @@
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
- <groupId>
- org.apache.maven.plugins
- </groupId>
- <artifactId>
- maven-antrun-plugin
- </artifactId>
- <versionRange>
- [1.3,)
- </versionRange>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <versionRange>[1.3,)</versionRange>
<goals>
<goal>run</goal>
</goals>
@@ -145,7 +138,6 @@
</pluginManagement>
<finalName>${project.artifactId}-${project.version}</finalName>
</build>
-
<dependencyManagement>
<dependencies>
<dependency>
@@ -157,24 +149,20 @@
</dependency>
</dependencies>
</dependencyManagement>
-
<dependencies>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm.extension.mockito</groupId>
<artifactId>camunda-bpm-mockito</artifactId>
- <version>${camunda.mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -213,6 +201,7 @@
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.10.19</version>
+ <!-- remove -->
<scope>test</scope>
</dependency>
<dependency>
@@ -220,15 +209,6 @@
<artifactId>java-uuid-generator</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>MSOCoreBPMN</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.onap.so</groupId>
<artifactId>MSOCoreBPMN</artifactId>
<version>${project.version}</version>
@@ -254,11 +234,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.ws.rs</groupId>
- <artifactId>javax.ws.rs-api</artifactId>
- <version>${jax.ws.rs}</version>
- </dependency>
- <dependency>
<groupId>org.camunda.spin</groupId>
<artifactId>camunda-spin-core</artifactId>
<scope>test</scope>
@@ -277,7 +252,6 @@
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-spin</artifactId>
</dependency>
-
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-plugin-connect</artifactId>
@@ -296,35 +270,14 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>javax.annotation-api</artifactId>
- <version>1.3</version>
- </dependency>
- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -333,6 +286,5 @@
<version>${grpc.version}</version>
<scope>test</scope>
</dependency>
-
</dependencies>
</project>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
index d81f5465b3..2301b47639 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
@@ -154,7 +154,7 @@ activator.processSdnrResponse(execution)</bpmn:script>
<bpmn:outgoing>Flow_0rizzsm</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def activator = new DoActivateAccessNSSI()
-activator..prepareUpdateJobStatus(execution,"processing","40","AN NF NSSI activation completed")</bpmn:script>
+activator.prepareUpdateJobStatus(execution,"processing","40","AN NF NSSI activation completed")</bpmn:script>
</bpmn:scriptTask>
<bpmn:serviceTask id="Activity_08yj5gq" name="Update Resource Operation Status">
<bpmn:extensionElements>
diff --git a/bpmn/so-bpmn-tasks/pom.xml b/bpmn/so-bpmn-tasks/pom.xml
index f7eb2c09c7..564a117674 100644
--- a/bpmn/so-bpmn-tasks/pom.xml
+++ b/bpmn/so-bpmn-tasks/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>bpmn</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-bpmn-tasks</artifactId>
@@ -162,13 +162,19 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-bom</artifactId>
+ <version>${camunda.version}</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -204,7 +210,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -212,9 +218,15 @@
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm-api</artifactId>
- <version>${project.version}</version>
+ <groupId>org.onap.so.adapters.so-etsi-sol003-adapter.lcm</groupId>
+ <artifactId>so-etsi-sol003-adapter-lcm-api</artifactId>
+ <version>${so-etsi-sol003-adapter-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-annotations</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
index b8699838e2..2138f489ee 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
@@ -204,7 +204,7 @@ public class ExecuteBuildingBlockBuilder {
isVirtualLink, resource.getVirtualLinkKey(), null, isConfiguration, null)));
}
- private ConfigurationResourceKeys getConfigurationResourceKeys(Resource resource, String vnfcName) {
+ protected ConfigurationResourceKeys getConfigurationResourceKeys(Resource resource, String vnfcName) {
ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
Optional.ofNullable(vnfcName).ifPresent(configurationResourceKeys::setVnfcName);
configurationResourceKeys.setCvnfcCustomizationUUID(resource.getCvnfModuleCustomizationId());
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
index 4be497c469..f5955d6c7d 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
@@ -46,10 +46,10 @@ import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
import org.onap.so.bpmn.common.BBConstants;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.excpetion.VnfcMultipleRelationshipException;
import org.onap.so.bpmn.infrastructure.workflow.tasks.utils.WorkflowResourceIdsUtils;
import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
-import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
@@ -490,7 +490,7 @@ public class WorkflowAction {
AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId).vfModule(vfModuleId));
AAIResultWrapper vfModuleResultsWrapper = bbInputSetupUtils.getAAIResourceDepthOne(uri);
Optional<Relationships> relationshipsOp = vfModuleResultsWrapper.getRelationships();
- if (!relationshipsOp.isPresent()) {
+ if (relationshipsOp.isEmpty()) {
logger.debug("No relationships were found for vfModule in AAI");
} else {
Relationships relationships = relationshipsOp.get();
@@ -503,21 +503,20 @@ public class WorkflowAction {
return vnfcs;
}
- protected <T> T getRelatedResourcesInVnfc(Vnfc vnfc, Class<T> resultClass, AAIObjectName name) throws Exception {
+ protected <T> T getRelatedResourcesInVnfc(Vnfc vnfc, Class<T> resultClass, AAIObjectName name)
+ throws VnfcMultipleRelationshipException {
T configuration = null;
AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
AAIResultWrapper vnfcResultsWrapper = bbInputSetupUtils.getAAIResourceDepthOne(uri);
Optional<Relationships> relationshipsOp = vnfcResultsWrapper.getRelationships();
- if (!relationshipsOp.isPresent()) {
+ if (relationshipsOp.isEmpty()) {
logger.debug("No relationships were found for VNFC in AAI");
} else {
Relationships relationships = relationshipsOp.get();
List<AAIResultWrapper> configurationResultWrappers =
this.getResultWrappersFromRelationships(relationships, name);
if (configurationResultWrappers.size() > 1) {
- String multipleRelationshipsError =
- "Multiple relationships exist from VNFC " + vnfc.getVnfcName() + " to Configurations";
- throw new Exception(multipleRelationshipsError);
+ throw new VnfcMultipleRelationshipException(vnfc.getVnfcName());
}
if (!configurationResultWrappers.isEmpty()) {
Optional<T> configurationOp = configurationResultWrappers.get(0).asBean(resultClass);
@@ -544,7 +543,7 @@ public class WorkflowAction {
}
protected List<ExecuteBuildingBlock> getConfigBuildingBlocks(ConfigBuildingBlocksDataObject dataObj)
- throws Exception {
+ throws AAIEntityNotFoundException, VnfcMultipleRelationshipException {
List<ExecuteBuildingBlock> flowsToExecuteConfigs = new ArrayList<>();
List<OrchestrationFlow> result = dataObj.getOrchFlows().stream()
@@ -658,7 +657,7 @@ public class WorkflowAction {
if (volumeGroupFromVfModule.isPresent()) {
String volumeGroupId = volumeGroupFromVfModule.get().getVolumeGroupId();
volumeGroupName = volumeGroupFromVfModule.get().getVolumeGroupName();
- logger.debug("Volume group id of the existing volume group is: " + volumeGroupId);
+ logger.debug("Volume group id of the existing volume group is: {}", volumeGroupId);
volumeGroupExisted = true;
dataObj.getWorkflowResourceIds().setVolumeGroupId(volumeGroupId);
dataObj.getReplaceInformation().setOldVolumeGroupName(volumeGroupName);
@@ -675,7 +674,7 @@ public class WorkflowAction {
String newVolumeGroupId = UUID.randomUUID().toString();
dataObj.getWorkflowResourceIds().setVolumeGroupId(newVolumeGroupId);
dataObj.getReplaceInformation().setOldVolumeGroupName(volumeGroupName);
- logger.debug("newVolumeGroupId: " + newVolumeGroupId);
+ logger.debug("newVolumeGroupId: {}", newVolumeGroupId);
}
}
@@ -702,7 +701,7 @@ public class WorkflowAction {
private void updateResourceIdsFromAAITraversal(List<ExecuteBuildingBlock> flowsToExecute,
List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
for (Pair<WorkflowType, String> pair : aaiResourceIds) {
- logger.debug(pair.getValue0() + ", " + pair.getValue1());
+ logger.debug("{}, {}", pair.getValue0(), pair.getValue1());
}
Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE))
@@ -1324,15 +1323,6 @@ public class WorkflowAction {
return sortedOrchFlows;
}
- private ConfigurationResourceKeys getConfigurationResourceKeys(Resource resource, String vnfcName) {
- ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
- Optional.ofNullable(vnfcName).ifPresent(configurationResourceKeys::setVnfcName);
- configurationResourceKeys.setCvnfcCustomizationUUID(resource.getCvnfModuleCustomizationId());
- configurationResourceKeys.setVfModuleCustomizationUUID(resource.getVfModuleCustomizationId());
- configurationResourceKeys.setVnfResourceCustomizationUUID(resource.getVnfCustomizationId());
- return configurationResourceKeys;
- }
-
protected List<OrchestrationFlow> queryNorthBoundRequestCatalogDb(DelegateExecution execution, String requestAction,
WorkflowType resourceName, boolean aLaCarte, String cloudOwner) {
return this.queryNorthBoundRequestCatalogDb(execution, requestAction, resourceName, aLaCarte, cloudOwner, "");
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenResponse.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/excpetion/VnfcMultipleRelationshipException.java
index 552612a6fb..8ef00655f2 100644
--- a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/entity/TokenResponse.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/excpetion/VnfcMultipleRelationshipException.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP - SO
* ================================================================================
- * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * Copyright (c) 2021 Nokia
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,15 +18,11 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.so.adapters.nssmf.entity;
+package org.onap.so.bpmn.infrastructure.workflow.tasks.excpetion;
+public class VnfcMultipleRelationshipException extends Exception {
-import lombok.Data;
-
-@Data
-public class TokenResponse {
-
- private String accessToken;
-
- private int expires;
+ public VnfcMultipleRelationshipException(String vnfcName) {
+ super("Multiple relationships exist from VNFC " + vnfcName + " to Configurations");
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java
index c8914f6e02..fae2317c8d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java
@@ -27,6 +27,7 @@
package org.onap.so.bpmn.infrastructure.workflow.tasks;
import org.junit.Test;
+import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
import java.util.ArrayList;
@@ -87,4 +88,26 @@ public class ExecuteBuildingBlockBuilderTest {
}
assertNotNull(result);
}
+
+ @Test
+ public void getConfigurationResourceKeysTest() {
+ String vnfcName = "vnfc";
+ String vfModuleCustomizationId = "1a2b3c4e5d";
+ String cvnfModuleCustomizationId = "2b1a3c";
+ String vnfCustomizationId = "zz12aa";
+
+ Resource resource = new Resource(WorkflowType.SERVICE, "123", true);
+
+ resource.setCvnfModuleCustomizationId(vfModuleCustomizationId);
+ resource.setCvnfModuleCustomizationId(cvnfModuleCustomizationId);
+ resource.setVnfCustomizationId(vnfCustomizationId);
+
+ ConfigurationResourceKeys confResourceKeys = executeBBBuilder.getConfigurationResourceKeys(resource, vnfcName);
+
+ assertNotNull(confResourceKeys);
+ assertEquals(vnfcName, confResourceKeys.getVnfcName());
+ assertEquals(cvnfModuleCustomizationId, confResourceKeys.getCvnfcCustomizationUUID());
+ assertEquals(vnfCustomizationId, confResourceKeys.getVnfResourceCustomizationUUID());
+
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/schema.sql b/bpmn/so-bpmn-tasks/src/test/resources/schema.sql
index 5ae6a2d972..3a143f2619 100644
--- a/bpmn/so-bpmn-tasks/src/test/resources/schema.sql
+++ b/bpmn/so-bpmn-tasks/src/test/resources/schema.sql
@@ -9,6 +9,29 @@ create table ACT_GE_PROPERTY (
primary key (NAME_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+insert into ACT_GE_PROPERTY
+values ('schema.version', 'fox', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(fox)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+insert into ACT_GE_PROPERTY
+values ('deployment.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('history.cleanup.job.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('startup.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('telemetry.lock', '0', 1);
+
+insert into ACT_GE_PROPERTY
+values ('installationId.lock', '0', 1);
create table ACT_GE_BYTEARRAY (
ID_ varchar(64),
@@ -18,13 +41,27 @@ create table ACT_GE_BYTEARRAY (
BYTES_ LONGBLOB,
GENERATED_ TINYINT,
TENANT_ID_ varchar(64),
+ TYPE_ integer,
+ CREATE_TIME_ datetime(3),
+ ROOT_PROC_INST_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
+ primary key (ID_)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+create table ACT_GE_SCHEMA_LOG (
+ ID_ varchar(64),
+ TIMESTAMP_ datetime(3),
+ VERSION_ varchar(255),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+insert into ACT_GE_SCHEMA_LOG
+values ('0', CURRENT_TIMESTAMP, '7.14.0');
+
create table ACT_RE_DEPLOYMENT (
ID_ varchar(64),
NAME_ varchar(255),
- DEPLOY_TIME_ timestamp(3),
+ DEPLOY_TIME_ datetime(3),
SOURCE_ varchar(255),
TENANT_ID_ varchar(64),
primary key (ID_)
@@ -33,6 +70,7 @@ create table ACT_RE_DEPLOYMENT (
create table ACT_RU_EXECUTION (
ID_ varchar(64),
REV_ integer,
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
BUSINESS_KEY_ varchar(255),
PARENT_ID_ varchar(64),
@@ -57,7 +95,7 @@ create table ACT_RU_JOB (
ID_ varchar(64) NOT NULL,
REV_ integer,
TYPE_ varchar(255) NOT NULL,
- LOCK_EXP_TIME_ timestamp(3) NULL,
+ LOCK_EXP_TIME_ datetime(3) NULL,
LOCK_OWNER_ varchar(255),
EXCLUSIVE_ boolean,
EXECUTION_ID_ varchar(64),
@@ -67,8 +105,10 @@ create table ACT_RU_JOB (
RETRIES_ integer,
EXCEPTION_STACK_ID_ varchar(64),
EXCEPTION_MSG_ varchar(4000),
- DUEDATE_ timestamp(3) NULL,
+ FAILED_ACT_ID_ varchar(255),
+ DUEDATE_ datetime(3) NULL,
REPEAT_ varchar(255),
+ REPEAT_OFFSET_ bigint DEFAULT 0,
HANDLER_TYPE_ varchar(255),
HANDLER_CFG_ varchar(4000),
DEPLOYMENT_ID_ varchar(64),
@@ -77,6 +117,7 @@ create table ACT_RU_JOB (
PRIORITY_ bigint NOT NULL DEFAULT 0,
SEQUENCE_COUNTER_ bigint,
TENANT_ID_ varchar(64),
+ CREATE_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -91,6 +132,7 @@ create table ACT_RU_JOBDEF (
SUSPENSION_STATE_ integer,
JOB_PRIORITY_ bigint,
TENANT_ID_ varchar(64),
+ DEPLOYMENT_ID_ varchar(64),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -109,6 +151,7 @@ create table ACT_RE_PROCDEF (
TENANT_ID_ varchar(64),
VERSION_TAG_ varchar(64),
HISTORY_TTL_ integer,
+ STARTABLE_ boolean NOT NULL default TRUE,
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -129,7 +172,7 @@ create table ACT_RU_TASK (
ASSIGNEE_ varchar(255),
DELEGATION_ varchar(64),
PRIORITY_ integer,
- CREATE_TIME_ timestamp(3),
+ CREATE_TIME_ datetime(3),
DUE_DATE_ datetime(3),
FOLLOW_UP_DATE_ datetime(3),
SUSPENSION_STATE_ integer,
@@ -156,14 +199,16 @@ create table ACT_RU_VARIABLE (
NAME_ varchar(255) not null,
EXECUTION_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
+ PROC_DEF_ID_ varchar(64),
CASE_EXECUTION_ID_ varchar(64),
CASE_INST_ID_ varchar(64),
TASK_ID_ varchar(64),
+ BATCH_ID_ varchar(64),
BYTEARRAY_ID_ varchar(64),
DOUBLE_ double,
LONG_ bigint,
- TEXT_ LONGBLOB,
- TEXT2_ LONGBLOB,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
VAR_SCOPE_ varchar(64) not null,
SEQUENCE_COUNTER_ bigint,
IS_CONCURRENT_LOCAL_ TINYINT,
@@ -180,7 +225,7 @@ create table ACT_RU_EVENT_SUBSCR (
PROC_INST_ID_ varchar(64),
ACTIVITY_ID_ varchar(255),
CONFIGURATION_ varchar(255),
- CREATED_ timestamp(3) not null,
+ CREATED_ datetime(3) not null,
TENANT_ID_ varchar(64),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -188,11 +233,12 @@ create table ACT_RU_EVENT_SUBSCR (
create table ACT_RU_INCIDENT (
ID_ varchar(64) not null,
REV_ integer not null,
- INCIDENT_TIMESTAMP_ timestamp(3) not null,
+ INCIDENT_TIMESTAMP_ datetime(3) not null,
INCIDENT_MSG_ varchar(4000),
INCIDENT_TYPE_ varchar(255) not null,
EXECUTION_ID_ varchar(64),
ACTIVITY_ID_ varchar(255),
+ FAILED_ACTIVITY_ID_ varchar(255),
PROC_INST_ID_ varchar(64),
PROC_DEF_ID_ varchar(64),
CAUSE_INCIDENT_ID_ varchar(64),
@@ -212,6 +258,8 @@ create table ACT_RU_AUTHORIZATION (
RESOURCE_TYPE_ integer not null,
RESOURCE_ID_ varchar(255),
PERMS_ integer,
+ REMOVAL_TIME_ datetime(3),
+ ROOT_PROC_INST_ID_ varchar(64),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -231,7 +279,7 @@ create table ACT_RU_METER_LOG (
NAME_ varchar(64) not null,
REPORTER_ varchar(255),
VALUE_ bigint,
- TIMESTAMP_ timestamp(3),
+ TIMESTAMP_ datetime(3),
MILLISECONDS_ bigint DEFAULT 0,
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -244,7 +292,7 @@ create table ACT_RU_EXT_TASK (
RETRIES_ integer,
ERROR_MSG_ varchar(4000),
ERROR_DETAILS_ID_ varchar(64),
- LOCK_EXP_TIME_ timestamp(3) NULL,
+ LOCK_EXP_TIME_ datetime(3) NULL,
SUSPENSION_STATE_ integer,
EXECUTION_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
@@ -271,20 +319,26 @@ create table ACT_RU_BATCH (
SUSPENSION_STATE_ integer,
CONFIGURATION_ varchar(255),
TENANT_ID_ varchar(64),
+ CREATE_USER_ID_ varchar(255),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+create index ACT_IDX_EXEC_ROOT_PI on ACT_RU_EXECUTION(ROOT_PROC_INST_ID_);
create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
create index ACT_IDX_EXEC_TENANT_ID on ACT_RU_EXECUTION(TENANT_ID_);
create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_);
create index ACT_IDX_TASK_ASSIGNEE on ACT_RU_TASK(ASSIGNEE_);
+create index ACT_IDX_TASK_OWNER on ACT_RU_TASK(OWNER_);
create index ACT_IDX_TASK_TENANT_ID on ACT_RU_TASK(TENANT_ID_);
create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_);
create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_);
create index ACT_IDX_EVENT_SUBSCR_CONFIG_ on ACT_RU_EVENT_SUBSCR(CONFIGURATION_);
create index ACT_IDX_EVENT_SUBSCR_TENANT_ID on ACT_RU_EVENT_SUBSCR(TENANT_ID_);
+
create index ACT_IDX_VARIABLE_TASK_ID on ACT_RU_VARIABLE(TASK_ID_);
create index ACT_IDX_VARIABLE_TENANT_ID on ACT_RU_VARIABLE(TENANT_ID_);
+create index ACT_IDX_VARIABLE_TASK_NAME_TYPE on ACT_RU_VARIABLE(TASK_ID_, NAME_, TYPE_);
+
create index ACT_IDX_ATHRZ_PROCEDEF on ACT_RU_IDENTITYLINK(PROC_DEF_ID_);
create index ACT_IDX_INC_CONFIGURATION on ACT_RU_INCIDENT(CONFIGURATION_);
create index ACT_IDX_INC_TENANT_ID on ACT_RU_INCIDENT(TENANT_ID_);
@@ -458,6 +512,12 @@ alter table ACT_RU_BATCH
foreign key (BATCH_JOB_DEF_ID_)
references ACT_RU_JOBDEF (ID_);
+create index ACT_IDX_BATCH_ID ON ACT_RU_VARIABLE(BATCH_ID_);
+alter table ACT_RU_VARIABLE
+ add constraint ACT_FK_VAR_BATCH
+ foreign key (BATCH_ID_)
+ references ACT_RU_BATCH (ID_);
+
-- indexes for deadlock problems - https://app.camunda.com/jira/browse/CAM-2567 --
create index ACT_IDX_INC_CAUSEINCID on ACT_RU_INCIDENT(CAUSE_INCIDENT_ID_);
create index ACT_IDX_INC_EXID on ACT_RU_INCIDENT(EXECUTION_ID_);
@@ -470,6 +530,8 @@ create index ACT_IDX_AUTH_RESOURCE_ID on ACT_RU_AUTHORIZATION(RESOURCE_ID_);
create index ACT_IDX_EXT_TASK_EXEC on ACT_RU_EXT_TASK(EXECUTION_ID_);
-- indexes to improve deployment
+create index ACT_IDX_BYTEARRAY_ROOT_PI on ACT_GE_BYTEARRAY(ROOT_PROC_INST_ID_);
+create index ACT_IDX_BYTEARRAY_RM_TIME on ACT_GE_BYTEARRAY(REMOVAL_TIME_);
create index ACT_IDX_BYTEARRAY_NAME on ACT_GE_BYTEARRAY(NAME_);
create index ACT_IDX_DEPLOYMENT_NAME on ACT_RE_DEPLOYMENT(NAME_);
create index ACT_IDX_DEPLOYMENT_TENANT_ID on ACT_RE_DEPLOYMENT(TENANT_ID_);
@@ -479,6 +541,27 @@ create index ACT_IDX_EVENT_SUBSCR_EVT_NAME ON ACT_RU_EVENT_SUBSCR(EVENT_NAME_);
create index ACT_IDX_PROCDEF_DEPLOYMENT_ID ON ACT_RE_PROCDEF(DEPLOYMENT_ID_);
create index ACT_IDX_PROCDEF_TENANT_ID ON ACT_RE_PROCDEF(TENANT_ID_);
create index ACT_IDX_PROCDEF_VER_TAG ON ACT_RE_PROCDEF(VERSION_TAG_);
+
+-- indices for history cleanup: https://jira.camunda.com/browse/CAM-11616
+create index ACT_IDX_AUTH_ROOT_PI on ACT_RU_AUTHORIZATION(ROOT_PROC_INST_ID_);
+create index ACT_IDX_AUTH_RM_TIME on ACT_RU_AUTHORIZATION(REMOVAL_TIME_);
+--
+-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
+-- under one or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information regarding copyright
+-- ownership. Camunda licenses this file to you under the Apache License,
+-- Version 2.0; you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
-- create case definition table --
create table ACT_RE_CASE_DEF (
ID_ varchar(64) not null,
@@ -535,6 +618,9 @@ create table ACT_RU_CASE_SENTRY_PART (
-- create index on business key --
create index ACT_IDX_CASE_EXEC_BUSKEY on ACT_RU_CASE_EXECUTION(BUSINESS_KEY_);
+-- https://app.camunda.com/jira/browse/CAM-9165
+create index ACT_IDX_CASE_EXE_CASE_INST on ACT_RU_CASE_EXECUTION(CASE_INST_ID_);
+
-- create foreign key constraints on ACT_RU_CASE_EXECUTION --
alter table ACT_RU_CASE_EXECUTION
add constraint ACT_FK_CASE_EXE_CASE_INST
@@ -586,6 +672,23 @@ alter table ACT_RU_CASE_SENTRY_PART
create index ACT_IDX_CASE_DEF_TENANT_ID on ACT_RE_CASE_DEF(TENANT_ID_);
create index ACT_IDX_CASE_EXEC_TENANT_ID on ACT_RU_CASE_EXECUTION(TENANT_ID_);
+--
+-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
+-- under one or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information regarding copyright
+-- ownership. Camunda licenses this file to you under the Apache License,
+-- Version 2.0; you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
-- create decision definition table --
create table ACT_RE_DECISION_DEF (
ID_ varchar(64) not null,
@@ -628,6 +731,23 @@ alter table ACT_RE_DECISION_DEF
create index ACT_IDX_DEC_DEF_TENANT_ID on ACT_RE_DECISION_DEF(TENANT_ID_);
create index ACT_IDX_DEC_DEF_REQ_ID on ACT_RE_DECISION_DEF(DEC_REQ_ID_);
create index ACT_IDX_DEC_REQ_DEF_TENANT_ID on ACT_RE_DECISION_REQ_DEF(TENANT_ID_);
+--
+-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
+-- under one or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information regarding copyright
+-- ownership. Camunda licenses this file to you under the Apache License,
+-- Version 2.0; you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
create table ACT_HI_PROCINST (
ID_ varchar(64) not null,
PROC_INST_ID_ varchar(64) not null,
@@ -636,11 +756,13 @@ create table ACT_HI_PROCINST (
PROC_DEF_ID_ varchar(64) not null,
START_TIME_ datetime(3) not null,
END_TIME_ datetime(3),
+ REMOVAL_TIME_ datetime(3),
DURATION_ bigint,
START_USER_ID_ varchar(255),
START_ACT_ID_ varchar(255),
END_ACT_ID_ varchar(255),
SUPER_PROCESS_INSTANCE_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
SUPER_CASE_INSTANCE_ID_ varchar(64),
CASE_INST_ID_ varchar(64),
DELETE_REASON_ varchar(4000),
@@ -655,6 +777,7 @@ create table ACT_HI_ACTINST (
PARENT_ACT_INST_ID_ varchar(64),
PROC_DEF_KEY_ varchar(255),
PROC_DEF_ID_ varchar(64) not null,
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64) not null,
EXECUTION_ID_ varchar(64) not null,
ACT_ID_ varchar(255) not null,
@@ -663,13 +786,14 @@ create table ACT_HI_ACTINST (
CALL_CASE_INST_ID_ varchar(64),
ACT_NAME_ varchar(255),
ACT_TYPE_ varchar(255) not null,
- ASSIGNEE_ varchar(64),
+ ASSIGNEE_ varchar(255),
START_TIME_ datetime(3) not null,
END_TIME_ datetime(3),
DURATION_ bigint,
ACT_INST_STATE_ integer,
SEQUENCE_COUNTER_ bigint,
TENANT_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -678,6 +802,7 @@ create table ACT_HI_TASKINST (
TASK_DEF_KEY_ varchar(255),
PROC_DEF_KEY_ varchar(255),
PROC_DEF_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
CASE_DEF_KEY_ varchar(255),
@@ -698,6 +823,7 @@ create table ACT_HI_TASKINST (
DUE_DATE_ datetime(3),
FOLLOW_UP_DATE_ datetime(3),
TENANT_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -705,6 +831,7 @@ create table ACT_HI_VARINST (
ID_ varchar(64) not null,
PROC_DEF_KEY_ varchar(255),
PROC_DEF_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
ACT_INST_ID_ varchar(64),
@@ -715,14 +842,16 @@ create table ACT_HI_VARINST (
TASK_ID_ varchar(64),
NAME_ varchar(255) not null,
VAR_TYPE_ varchar(100),
+ CREATE_TIME_ datetime(3),
REV_ integer,
BYTEARRAY_ID_ varchar(64),
DOUBLE_ double,
LONG_ bigint,
- TEXT_ LONGBLOB,
- TEXT2_ LONGBLOB,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
TENANT_ID_ varchar(64),
STATE_ varchar(20),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -731,6 +860,7 @@ create table ACT_HI_DETAIL (
TYPE_ varchar(255) not null,
PROC_DEF_KEY_ varchar(255),
PROC_DEF_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
CASE_DEF_KEY_ varchar(255),
@@ -747,11 +877,13 @@ create table ACT_HI_DETAIL (
BYTEARRAY_ID_ varchar(64),
DOUBLE_ double,
LONG_ bigint,
- TEXT_ LONGBLOB,
- TEXT2_ LONGBLOB,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
SEQUENCE_COUNTER_ bigint,
TENANT_ID_ varchar(64),
OPERATION_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
+ INITIAL_ boolean,
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -762,11 +894,13 @@ create table ACT_HI_IDENTITYLINK (
USER_ID_ varchar(255),
GROUP_ID_ varchar(255),
TASK_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_DEF_ID_ varchar(64),
OPERATION_TYPE_ varchar(64),
ASSIGNER_ID_ varchar(64),
PROC_DEF_KEY_ varchar(255),
TENANT_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -776,11 +910,13 @@ create table ACT_HI_COMMENT (
TIME_ datetime(3) not null,
USER_ID_ varchar(255),
TASK_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
ACTION_ varchar(255),
MESSAGE_ varchar(4000),
FULL_MSG_ LONGBLOB,
TENANT_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -792,10 +928,13 @@ create table ACT_HI_ATTACHMENT (
DESCRIPTION_ varchar(4000),
TYPE_ varchar(255),
TASK_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
URL_ varchar(4000),
CONTENT_ID_ varchar(64),
TENANT_ID_ varchar(64),
+ CREATE_TIME_ datetime(3),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -804,6 +943,7 @@ create table ACT_HI_OP_LOG (
DEPLOYMENT_ID_ varchar(64),
PROC_DEF_ID_ varchar(64),
PROC_DEF_KEY_ varchar(255),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
CASE_DEF_ID_ varchar(64),
@@ -822,6 +962,10 @@ create table ACT_HI_OP_LOG (
ORG_VALUE_ varchar(4000),
NEW_VALUE_ varchar(4000),
TENANT_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
+ CATEGORY_ varchar(64),
+ EXTERNAL_TASK_ID_ varchar(64),
+ ANNOTATION_ varchar(4000),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -829,6 +973,7 @@ create table ACT_HI_INCIDENT (
ID_ varchar(64) not null,
PROC_DEF_KEY_ varchar(255),
PROC_DEF_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
CREATE_TIME_ timestamp(3) not null,
@@ -836,20 +981,23 @@ create table ACT_HI_INCIDENT (
INCIDENT_MSG_ varchar(4000),
INCIDENT_TYPE_ varchar(255) not null,
ACTIVITY_ID_ varchar(255),
+ FAILED_ACTIVITY_ID_ varchar(255),
CAUSE_INCIDENT_ID_ varchar(64),
ROOT_CAUSE_INCIDENT_ID_ varchar(64),
CONFIGURATION_ varchar(255),
+ HISTORY_CONFIGURATION_ varchar(255),
INCIDENT_STATE_ integer,
TENANT_ID_ varchar(64),
JOB_DEF_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
create table ACT_HI_JOB_LOG (
ID_ varchar(64) not null,
- TIMESTAMP_ timestamp(3) not null,
+ TIMESTAMP_ datetime(3) not null,
JOB_ID_ varchar(64) not null,
- JOB_DUEDATE_ timestamp(3) NULL,
+ JOB_DUEDATE_ datetime(3) NULL,
JOB_RETRIES_ integer,
JOB_PRIORITY_ bigint NOT NULL DEFAULT 0,
JOB_EXCEPTION_MSG_ varchar(4000),
@@ -859,6 +1007,8 @@ create table ACT_HI_JOB_LOG (
JOB_DEF_TYPE_ varchar(255),
JOB_DEF_CONFIGURATION_ varchar(255),
ACT_ID_ varchar(255),
+ FAILED_ACT_ID_ varchar(255),
+ ROOT_PROC_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
PROCESS_INSTANCE_ID_ varchar(64),
PROCESS_DEF_ID_ varchar(64),
@@ -866,6 +1016,8 @@ create table ACT_HI_JOB_LOG (
DEPLOYMENT_ID_ varchar(64),
SEQUENCE_COUNTER_ bigint,
TENANT_ID_ varchar(64),
+ HOSTNAME_ varchar(255),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -879,8 +1031,10 @@ create table ACT_HI_BATCH (
MONITOR_JOB_DEF_ID_ varchar(64),
BATCH_JOB_DEF_ID_ varchar(64),
TENANT_ID_ varchar(64),
+ CREATE_USER_ID_ varchar(255),
START_TIME_ datetime(3) not null,
END_TIME_ datetime(3),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -897,11 +1051,13 @@ create table ACT_HI_EXT_TASK_LOG (
ACT_ID_ varchar(255),
ACT_INST_ID_ varchar(64),
EXECUTION_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
PROC_INST_ID_ varchar(64),
PROC_DEF_ID_ varchar(64),
PROC_DEF_KEY_ varchar(255),
TENANT_ID_ varchar(64),
STATE_ integer,
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -909,20 +1065,32 @@ create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_);
create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_);
create index ACT_IDX_HI_PRO_INST_TENANT_ID on ACT_HI_PROCINST(TENANT_ID_);
create index ACT_IDX_HI_PRO_INST_PROC_DEF_KEY on ACT_HI_PROCINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_PRO_INST_PROC_TIME on ACT_HI_PROCINST(START_TIME_, END_TIME_);
+create index ACT_IDX_HI_PI_PDEFID_END_TIME on ACT_HI_PROCINST(PROC_DEF_ID_, END_TIME_);
+create index ACT_IDX_HI_PRO_INST_ROOT_PI on ACT_HI_PROCINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_PRO_INST_RM_TIME on ACT_HI_PROCINST(REMOVAL_TIME_);
-create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_);
+create index ACT_IDX_HI_ACTINST_ROOT_PI on ACT_HI_ACTINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_ACT_INST_START_END on ACT_HI_ACTINST(START_TIME_, END_TIME_);
create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_);
create index ACT_IDX_HI_ACT_INST_PROCINST on ACT_HI_ACTINST(PROC_INST_ID_, ACT_ID_);
create index ACT_IDX_HI_ACT_INST_COMP on ACT_HI_ACTINST(EXECUTION_ID_, ACT_ID_, END_TIME_, ID_);
-create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_);
+create index ACT_IDX_HI_ACT_INST_STATS on ACT_HI_ACTINST(PROC_DEF_ID_, PROC_INST_ID_, ACT_ID_, END_TIME_, ACT_INST_STATE_);
create index ACT_IDX_HI_ACT_INST_TENANT_ID on ACT_HI_ACTINST(TENANT_ID_);
create index ACT_IDX_HI_ACT_INST_PROC_DEF_KEY on ACT_HI_ACTINST(PROC_DEF_KEY_);
+create index ACT_IDX_HI_AI_PDEFID_END_TIME on ACT_HI_ACTINST(PROC_DEF_ID_, END_TIME_);
+create index ACT_IDX_HI_ACT_INST_RM_TIME on ACT_HI_ACTINST(REMOVAL_TIME_);
+create index ACT_IDX_HI_TASKINST_ROOT_PI on ACT_HI_TASKINST(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_TASK_INST_TENANT_ID on ACT_HI_TASKINST(TENANT_ID_);
create index ACT_IDX_HI_TASK_INST_PROC_DEF_KEY on ACT_HI_TASKINST(PROC_DEF_KEY_);
create index ACT_IDX_HI_TASKINST_PROCINST on ACT_HI_TASKINST(PROC_INST_ID_);
create index ACT_IDX_HI_TASKINSTID_PROCINST on ACT_HI_TASKINST(ID_,PROC_INST_ID_);
+create index ACT_IDX_HI_TASK_INST_RM_TIME on ACT_HI_TASKINST(REMOVAL_TIME_);
+create index ACT_IDX_HI_TASK_INST_START on ACT_HI_TASKINST(START_TIME_);
+create index ACT_IDX_HI_TASK_INST_END on ACT_HI_TASKINST(END_TIME_);
+create index ACT_IDX_HI_DETAIL_ROOT_PI on ACT_HI_DETAIL(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_);
create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_);
create index ACT_IDX_HI_DETAIL_CASE_INST on ACT_HI_DETAIL(CASE_INST_ID_);
@@ -933,46 +1101,94 @@ create index ACT_IDX_HI_DETAIL_TASK_ID on ACT_HI_DETAIL(TASK_ID_);
create index ACT_IDX_HI_DETAIL_TENANT_ID on ACT_HI_DETAIL(TENANT_ID_);
create index ACT_IDX_HI_DETAIL_PROC_DEF_KEY on ACT_HI_DETAIL(PROC_DEF_KEY_);
create index ACT_IDX_HI_DETAIL_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_);
+create index ACT_IDX_HI_DETAIL_RM_TIME on ACT_HI_DETAIL(REMOVAL_TIME_);
+create index ACT_IDX_HI_DETAIL_TASK_BYTEAR on ACT_HI_DETAIL(BYTEARRAY_ID_, TASK_ID_);
+create index ACT_IDX_HI_DETAIL_VAR_INST_ID on ACT_HI_DETAIL(VAR_INST_ID_);
+create index ACT_IDX_HI_IDENT_LNK_ROOT_PI on ACT_HI_IDENTITYLINK(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_IDENT_LNK_USER on ACT_HI_IDENTITYLINK(USER_ID_);
create index ACT_IDX_HI_IDENT_LNK_GROUP on ACT_HI_IDENTITYLINK(GROUP_ID_);
create index ACT_IDX_HI_IDENT_LNK_TENANT_ID on ACT_HI_IDENTITYLINK(TENANT_ID_);
create index ACT_IDX_HI_IDENT_LNK_PROC_DEF_KEY on ACT_HI_IDENTITYLINK(PROC_DEF_KEY_);
create index ACT_IDX_HI_IDENT_LINK_TASK on ACT_HI_IDENTITYLINK(TASK_ID_);
+create index ACT_IDX_HI_IDENT_LINK_RM_TIME on ACT_HI_IDENTITYLINK(REMOVAL_TIME_);
+create index ACT_IDX_HI_IDENT_LNK_TIMESTAMP on ACT_HI_IDENTITYLINK(TIMESTAMP_);
+create index ACT_IDX_HI_VARINST_ROOT_PI on ACT_HI_VARINST(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_PROCVAR_PROC_INST on ACT_HI_VARINST(PROC_INST_ID_);
create index ACT_IDX_HI_PROCVAR_NAME_TYPE on ACT_HI_VARINST(NAME_, VAR_TYPE_);
create index ACT_IDX_HI_CASEVAR_CASE_INST on ACT_HI_VARINST(CASE_INST_ID_);
create index ACT_IDX_HI_VAR_INST_TENANT_ID on ACT_HI_VARINST(TENANT_ID_);
create index ACT_IDX_HI_VAR_INST_PROC_DEF_KEY on ACT_HI_VARINST(PROC_DEF_KEY_);
create index ACT_IDX_HI_VARINST_BYTEAR on ACT_HI_VARINST(BYTEARRAY_ID_);
+create index ACT_IDX_HI_VARINST_RM_TIME on ACT_HI_VARINST(REMOVAL_TIME_);
+create index ACT_IDX_HI_VAR_PI_NAME_TYPE on ACT_HI_VARINST(PROC_INST_ID_, NAME_, VAR_TYPE_);
create index ACT_IDX_HI_INCIDENT_TENANT_ID on ACT_HI_INCIDENT(TENANT_ID_);
create index ACT_IDX_HI_INCIDENT_PROC_DEF_KEY on ACT_HI_INCIDENT(PROC_DEF_KEY_);
+create index ACT_IDX_HI_INCIDENT_ROOT_PI on ACT_HI_INCIDENT(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_INCIDENT_PROCINST on ACT_HI_INCIDENT(PROC_INST_ID_);
+create index ACT_IDX_HI_INCIDENT_RM_TIME on ACT_HI_INCIDENT(REMOVAL_TIME_);
+create index ACT_IDX_HI_INCIDENT_CREATE_TIME on ACT_HI_INCIDENT(CREATE_TIME_);
+create index ACT_IDX_HI_INCIDENT_END_TIME on ACT_HI_INCIDENT(END_TIME_);
+create index ACT_IDX_HI_JOB_LOG_ROOT_PI on ACT_HI_JOB_LOG(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_JOB_LOG_PROCINST on ACT_HI_JOB_LOG(PROCESS_INSTANCE_ID_);
create index ACT_IDX_HI_JOB_LOG_PROCDEF on ACT_HI_JOB_LOG(PROCESS_DEF_ID_);
create index ACT_IDX_HI_JOB_LOG_TENANT_ID on ACT_HI_JOB_LOG(TENANT_ID_);
create index ACT_IDX_HI_JOB_LOG_JOB_DEF_ID on ACT_HI_JOB_LOG(JOB_DEF_ID_);
create index ACT_IDX_HI_JOB_LOG_PROC_DEF_KEY on ACT_HI_JOB_LOG(PROCESS_DEF_KEY_);
create index ACT_IDX_HI_JOB_LOG_EX_STACK on ACT_HI_JOB_LOG(JOB_EXCEPTION_STACK_ID_);
+create index ACT_IDX_HI_JOB_LOG_RM_TIME on ACT_HI_JOB_LOG(REMOVAL_TIME_);
+create index ACT_IDX_HI_JOB_LOG_JOB_CONF on ACT_HI_JOB_LOG(JOB_DEF_CONFIGURATION_);
+
+create index ACT_HI_BAT_RM_TIME on ACT_HI_BATCH(REMOVAL_TIME_);
+create index ACT_HI_EXT_TASK_LOG_ROOT_PI on ACT_HI_EXT_TASK_LOG(ROOT_PROC_INST_ID_);
create index ACT_HI_EXT_TASK_LOG_PROCINST on ACT_HI_EXT_TASK_LOG(PROC_INST_ID_);
create index ACT_HI_EXT_TASK_LOG_PROCDEF on ACT_HI_EXT_TASK_LOG(PROC_DEF_ID_);
create index ACT_HI_EXT_TASK_LOG_PROC_DEF_KEY on ACT_HI_EXT_TASK_LOG(PROC_DEF_KEY_);
create index ACT_HI_EXT_TASK_LOG_TENANT_ID on ACT_HI_EXT_TASK_LOG(TENANT_ID_);
create index ACT_IDX_HI_EXTTASKLOG_ERRORDET on ACT_HI_EXT_TASK_LOG(ERROR_DETAILS_ID_);
+create index ACT_HI_EXT_TASK_LOG_RM_TIME on ACT_HI_EXT_TASK_LOG(REMOVAL_TIME_);
+create index ACT_IDX_HI_OP_LOG_ROOT_PI on ACT_HI_OP_LOG(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_OP_LOG_PROCINST on ACT_HI_OP_LOG(PROC_INST_ID_);
create index ACT_IDX_HI_OP_LOG_PROCDEF on ACT_HI_OP_LOG(PROC_DEF_ID_);
+create index ACT_IDX_HI_OP_LOG_TASK on ACT_HI_OP_LOG(TASK_ID_);
+create index ACT_IDX_HI_OP_LOG_RM_TIME on ACT_HI_OP_LOG(REMOVAL_TIME_);
+create index ACT_IDX_HI_OP_LOG_TIMESTAMP on ACT_HI_OP_LOG(TIMESTAMP_);
+create index ACT_IDX_HI_OP_LOG_USER_ID on ACT_HI_OP_LOG(USER_ID_);
+create index ACT_IDX_HI_OP_LOG_OP_TYPE on ACT_HI_OP_LOG(OPERATION_TYPE_);
+create index ACT_IDX_HI_OP_LOG_ENTITY_TYPE on ACT_HI_OP_LOG(ENTITY_TYPE_);
create index ACT_IDX_HI_COMMENT_TASK on ACT_HI_COMMENT(TASK_ID_);
+create index ACT_IDX_HI_COMMENT_ROOT_PI on ACT_HI_COMMENT(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_COMMENT_PROCINST on ACT_HI_COMMENT(PROC_INST_ID_);
+create index ACT_IDX_HI_COMMENT_RM_TIME on ACT_HI_COMMENT(REMOVAL_TIME_);
create index ACT_IDX_HI_ATTACHMENT_CONTENT on ACT_HI_ATTACHMENT(CONTENT_ID_);
+create index ACT_IDX_HI_ATTACHMENT_ROOT_PI on ACT_HI_ATTACHMENT(ROOT_PROC_INST_ID_);
create index ACT_IDX_HI_ATTACHMENT_PROCINST on ACT_HI_ATTACHMENT(PROC_INST_ID_);
create index ACT_IDX_HI_ATTACHMENT_TASK on ACT_HI_ATTACHMENT(TASK_ID_);
+create index ACT_IDX_HI_ATTACHMENT_RM_TIME on ACT_HI_ATTACHMENT(REMOVAL_TIME_);
+--
+-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
+-- under one or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information regarding copyright
+-- ownership. Camunda licenses this file to you under the Apache License,
+-- Version 2.0; you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
create table ACT_HI_CASEINST (
ID_ varchar(64) not null,
CASE_INST_ID_ varchar(64) not null,
@@ -1018,6 +1234,23 @@ create index ACT_IDX_HI_CAS_A_I_END on ACT_HI_CASEACTINST(END_TIME_);
create index ACT_IDX_HI_CAS_A_I_COMP on ACT_HI_CASEACTINST(CASE_ACT_ID_, END_TIME_, ID_);
create index ACT_IDX_HI_CAS_A_I_CASEINST on ACT_HI_CASEACTINST(CASE_INST_ID_, CASE_ACT_ID_);
create index ACT_IDX_HI_CAS_A_I_TENANT_ID on ACT_HI_CASEACTINST(TENANT_ID_);
+--
+-- Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH
+-- under one or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information regarding copyright
+-- ownership. Camunda licenses this file to you under the Apache License,
+-- Version 2.0; you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
-- create history decision instance table --
create table ACT_HI_DECINST (
ID_ varchar(64) NOT NULL,
@@ -1033,9 +1266,11 @@ create table ACT_HI_DECINST (
ACT_INST_ID_ varchar(64),
ACT_ID_ varchar(255),
EVAL_TIME_ datetime(3) not null,
+ REMOVAL_TIME_ datetime(3),
COLLECT_VALUE_ double,
USER_ID_ varchar(255),
ROOT_DEC_INST_ID_ varchar(64),
+ ROOT_PROC_INST_ID_ varchar(64),
DEC_REQ_ID_ varchar(64),
DEC_REQ_KEY_ varchar(255),
TENANT_ID_ varchar(64),
@@ -1052,9 +1287,12 @@ create table ACT_HI_DEC_IN (
BYTEARRAY_ID_ varchar(64),
DOUBLE_ double,
LONG_ bigint,
- TEXT_ LONGBLOB,
- TEXT2_ LONGBLOB,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
TENANT_ID_ varchar(64),
+ CREATE_TIME_ datetime(3),
+ ROOT_PROC_INST_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -1071,9 +1309,12 @@ create table ACT_HI_DEC_OUT (
BYTEARRAY_ID_ varchar(64),
DOUBLE_ double,
LONG_ bigint,
- TEXT_ LONGBLOB,
- TEXT2_ LONGBLOB,
+ TEXT_ varchar(4000),
+ TEXT2_ varchar(4000),
TENANT_ID_ varchar(64),
+ CREATE_TIME_ datetime(3),
+ ROOT_PROC_INST_ID_ varchar(64),
+ REMOVAL_TIME_ datetime(3),
primary key (ID_)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
@@ -1089,107 +1330,16 @@ create index ACT_IDX_HI_DEC_INST_TENANT_ID on ACT_HI_DECINST(TENANT_ID_);
create index ACT_IDX_HI_DEC_INST_ROOT_ID on ACT_HI_DECINST(ROOT_DEC_INST_ID_);
create index ACT_IDX_HI_DEC_INST_REQ_ID on ACT_HI_DECINST(DEC_REQ_ID_);
create index ACT_IDX_HI_DEC_INST_REQ_KEY on ACT_HI_DECINST(DEC_REQ_KEY_);
+create index ACT_IDX_HI_DEC_INST_ROOT_PI on ACT_HI_DECINST(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_INST_RM_TIME on ACT_HI_DECINST(REMOVAL_TIME_);
create index ACT_IDX_HI_DEC_IN_INST on ACT_HI_DEC_IN(DEC_INST_ID_);
create index ACT_IDX_HI_DEC_IN_CLAUSE on ACT_HI_DEC_IN(DEC_INST_ID_, CLAUSE_ID_);
+create index ACT_IDX_HI_DEC_IN_ROOT_PI on ACT_HI_DEC_IN(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_IN_RM_TIME on ACT_HI_DEC_IN(REMOVAL_TIME_);
create index ACT_IDX_HI_DEC_OUT_INST on ACT_HI_DEC_OUT(DEC_INST_ID_);
create index ACT_IDX_HI_DEC_OUT_RULE on ACT_HI_DEC_OUT(RULE_ORDER_, CLAUSE_ID_);
-
--- mariadb_identity_7.8.0-ee
-
-create table ACT_ID_GROUP (
- ID_ varchar(64),
- REV_ integer,
- NAME_ varchar(255),
- TYPE_ varchar(255),
- primary key (ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-create table ACT_ID_MEMBERSHIP (
- USER_ID_ varchar(64),
- GROUP_ID_ varchar(64),
- primary key (USER_ID_, GROUP_ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-create table ACT_ID_USER (
- ID_ varchar(64),
- REV_ integer,
- FIRST_ varchar(255),
- LAST_ varchar(255),
- EMAIL_ varchar(255),
- PWD_ varchar(255),
- SALT_ varchar(255),
- PICTURE_ID_ varchar(64),
- primary key (ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-create table ACT_ID_INFO (
- ID_ varchar(64),
- REV_ integer,
- USER_ID_ varchar(64),
- TYPE_ varchar(64),
- KEY_ varchar(255),
- VALUE_ varchar(255),
- PASSWORD_ LONGBLOB,
- PARENT_ID_ varchar(255),
- primary key (ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-create table ACT_ID_TENANT (
- ID_ varchar(64),
- REV_ integer,
- NAME_ varchar(255),
- primary key (ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-create table ACT_ID_TENANT_MEMBER (
- ID_ varchar(64) not null,
- TENANT_ID_ varchar(64) not null,
- USER_ID_ varchar(64),
- GROUP_ID_ varchar(64),
- primary key (ID_)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
-
-alter table ACT_ID_MEMBERSHIP
- add constraint ACT_FK_MEMB_GROUP
- foreign key (GROUP_ID_)
- references ACT_ID_GROUP (ID_);
-
-alter table ACT_ID_MEMBERSHIP
- add constraint ACT_FK_MEMB_USER
- foreign key (USER_ID_)
- references ACT_ID_USER (ID_);
-
-alter table ACT_ID_TENANT_MEMBER
- add constraint ACT_UNIQ_TENANT_MEMB_USER
- unique (TENANT_ID_, USER_ID_);
-
-alter table ACT_ID_TENANT_MEMBER
- add constraint ACT_UNIQ_TENANT_MEMB_GROUP
- unique (TENANT_ID_, GROUP_ID_);
-
-alter table ACT_ID_TENANT_MEMBER
- add constraint ACT_FK_TENANT_MEMB
- foreign key (TENANT_ID_)
- references ACT_ID_TENANT (ID_);
-
-alter table ACT_ID_TENANT_MEMBER
- add constraint ACT_FK_TENANT_MEMB_USER
- foreign key (USER_ID_)
- references ACT_ID_USER (ID_);
-
-alter table ACT_ID_TENANT_MEMBER
- add constraint ACT_FK_TENANT_MEMB_GROUP
- foreign key (GROUP_ID_)
- references ACT_ID_GROUP (ID_);
-
-ALTER TABLE ACT_GE_BYTEARRAY
- ADD TYPE_ integer;
-
-ALTER TABLE ACT_GE_BYTEARRAY
- ADD CREATE_TIME_ datetime(3);
-
-ALTER TABLE ACT_RE_PROCDEF
- ADD STARTABLE_ BOOLEAN NOT NULL DEFAULT TRUE; \ No newline at end of file
+create index ACT_IDX_HI_DEC_OUT_ROOT_PI on ACT_HI_DEC_OUT(ROOT_PROC_INST_ID_);
+create index ACT_IDX_HI_DEC_OUT_RM_TIME on ACT_HI_DEC_OUT(REMOVAL_TIME_);
diff --git a/common/pom.xml b/common/pom.xml
index 08f797d7e5..f1541314ec 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -5,10 +5,10 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>common</artifactId>
- <name>MSO Common classes</name>
+ <name>common</name>
<description>MSO Common classes:- Logger</description>
<properties>
@@ -225,7 +225,7 @@
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-external-task-client</artifactId>
- <version>1.1.1</version>
+ <version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.onap.appc.client</groupId>
@@ -393,5 +393,23 @@
</executions>
</plugin>
</plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.20</version>
+ <configuration>
+ <systemPropertyVariables>
+ <so.log.level>DEBUG</so.log.level>
+ </systemPropertyVariables>
+ <rerunFailingTestsCount>2</rerunFailingTestsCount>
+ <parallel>suites</parallel>
+ <useUnlimitedThreads>false</useUnlimitedThreads>
+ <threadCount>1</threadCount>
+ <argLine>${surefireArgLine}</argLine>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
</project>
diff --git a/cxf-logging/pom.xml b/cxf-logging/pom.xml
index 64cea6c8b3..39beb10dd7 100644
--- a/cxf-logging/pom.xml
+++ b/cxf-logging/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<name>CXFLogging</name>
<description>Common CXF Logging Classes</description>
diff --git a/deployment-configs/pom.xml b/deployment-configs/pom.xml
index bc4df6ad36..0d5494517d 100644
--- a/deployment-configs/pom.xml
+++ b/deployment-configs/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>deployment-configs</artifactId>
<name>deployment-configs</name>
diff --git a/docs/developer_info/developer_information.rst b/docs/developer_info/developer_information.rst
index 85e7010fcb..e174133d6f 100644
--- a/docs/developer_info/developer_information.rst
+++ b/docs/developer_info/developer_information.rst
@@ -20,6 +20,7 @@ SO Developer Information
BPMN_Subprocess_Process_Flows.rst
BPMN_Project_Deployment_Strategy.rst
BPMN-INFRA_Workflow_Understanding.rst
+ pnf_pnp_workflow_migration_to_BB/pnf_pnp_support_in_service_orchestration.rst
Docker-Config_Understanding.rst
Mso_Openstack_Adapter.rst
Cxf_Logging.rst
diff --git a/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Building_Block_based_PNF_PnP_flows.rst b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Building_Block_based_PNF_PnP_flows.rst
new file mode 100644
index 0000000000..c31ca44d8e
--- /dev/null
+++ b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Building_Block_based_PNF_PnP_flows.rst
@@ -0,0 +1,102 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2021 NOKIA, Ltd.
+
+Building Block based PNF PnP flows
+==================================
+
+.. image:: ../../images/proposed_building_blocks.png
+
+AssignPnfBB
+-----------
+
+* Responsibility:
+
+ * Creates PNF entry in AAI (with PNF name chosen by user)
+
+ * Additionally stores PNF model-related parameters in AAI:
+ * model-customization-id
+ * model-invariant-id
+ * model-version-id
+
+ * Makes a link in AAI between Service entry and PNF entry
+
+ * Sets PNF orchestration status in AAI to Assigned
+
+* Currently implemented in CreateAndActivatePnfResource.bpmn
+
+WaitForPnfReadyBB
+-----------------
+
+* Responsibility:
+
+ * Waits for "PNF ready" event sent from PRH to DMaaP
+ * pnfCorrelationId from the event must match PNF instance name provided by the user during service instantiation
+
+ * Sets PNF orchestration status in AAI to:
+ * Register - when starting to wait for PNF ready event
+ * Registered - when PNF ready event is successfully received
+
+ * Currently implemented in CreateAndActivatePnfResource.bpmn
+
+
+Support for config assign (ControllerExecutionBB, action: configAssign)
+-----------------------------------------------------------------------
+
+* Responsibility:
+ * Runs config assign via CDS
+
+* Currently implemented in ConfigurePnfResource.bpmn
+
+* We will reuse generic BPMN for calling CDS (ControllerExecutionBB)
+
+* Things to consider:
+ * SkipPostInstantiationConfiguration should be taken into account
+
+
+Support for config deploy (ControllerExecutionBB, action: configDeploy)
+-----------------------------------------------------------------------
+
+
+* Responsibility:
+ * Runs config deploy via CDS
+
+* Currently implemented in ConfigurePnfResource.bpmn
+
+* We will reuse generic BPMN for calling CDS (ControllerExecutionBB)
+
+* Things to consider:
+ * SkipPostInstantiationConfiguration should be taken into account
+
+ActivatePnfBB
+-------------
+
+* Responsibility:
+ * Sets PNF orchestration status in AAI as Active
+
+
+Sequence in Service-Macro-Create flow
+-------------------------------------
+
+1. AssignServiceInstanceBB
+2. CreateNetworkCollectionBB
+3. AssignNetworkBB
+4. AssignVnfBB
+5. AssignVolumeGroupBB
+6. AssignVfModuleBB
+7. **AssignPnfBB**
+8. **WaitForPnfReadyBB**
+9. **ControllerExecutionBB (action: configAssign, scope: pnf)**
+10. **ControllerExecutionBB (action: configDeploy, scope: pnf)**
+11. **ActivatePnfBB**
+12. ConfigAssignVnfBB
+13. CreateNetworkBB
+14. ActivateNetworkBB
+15. CreateVolumeGroupBB
+16. ActivateVolumeGroupBB
+17. CreateVfModuleBB
+18. ActivateVfModuleBB
+19. ConfigDeployVnfBB
+20. ActivateVnfBB
+21. ActivateNetworkCollectionBB
+22. ActivateServiceInstanceBB \ No newline at end of file
diff --git a/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Legacy_PNF_PNP_BPMN_workflows.rst b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Legacy_PNF_PNP_BPMN_workflows.rst
new file mode 100644
index 0000000000..260197e767
--- /dev/null
+++ b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/Legacy_PNF_PNP_BPMN_workflows.rst
@@ -0,0 +1,20 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2021 NOKIA, Ltd.
+
+Legacy PNF PNP BPMN workflows
+=============================
+
+**By PNF PNP workflow we understand 2 BPMNs:**
+
+* CreateAndActivatePnfResource
+
+.. image:: ../../images/CreateAndActivatePnfResource.png
+
+* ConfigurePnfResource
+
+.. image:: ../../images/ConfigurePnfResource.png
+
+**Both included in CreateVcpeResCustService_simplified BPMN**
+
+.. image:: ../../images/goal3.png
diff --git a/docs/developer_info/pnf_pnp_workflow_migration_to_BB/pnf_pnp_support_in_service_orchestration.rst b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/pnf_pnp_support_in_service_orchestration.rst
new file mode 100644
index 0000000000..0e3f4341e8
--- /dev/null
+++ b/docs/developer_info/pnf_pnp_workflow_migration_to_BB/pnf_pnp_support_in_service_orchestration.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2021 NOKIA, Ltd.
+
+PNF PnP support in Service Orchestration
+========================================
+
+.. toctree::
+ :maxdepth: 1
+
+
+ Legacy_PNF_PNP_BPMN_workflows.rst
+ Building_Block_based_PNF_PnP_flows.rst \ No newline at end of file
diff --git a/docs/images/ConfigurePnfResource.png b/docs/images/ConfigurePnfResource.png
new file mode 100644
index 0000000000..7d1fbf81c5
--- /dev/null
+++ b/docs/images/ConfigurePnfResource.png
Binary files differ
diff --git a/docs/images/CreateAndActivatePnfResource.png b/docs/images/CreateAndActivatePnfResource.png
new file mode 100644
index 0000000000..0c440cb169
--- /dev/null
+++ b/docs/images/CreateAndActivatePnfResource.png
Binary files differ
diff --git a/docs/images/goal3.png b/docs/images/goal3.png
new file mode 100644
index 0000000000..a0c1d18a40
--- /dev/null
+++ b/docs/images/goal3.png
Binary files differ
diff --git a/docs/images/proposed_building_blocks.png b/docs/images/proposed_building_blocks.png
new file mode 100644
index 0000000000..eabe251e64
--- /dev/null
+++ b/docs/images/proposed_building_blocks.png
Binary files differ
diff --git a/graph-inventory/aai-client/pom.xml b/graph-inventory/aai-client/pom.xml
index d532103c40..5bce9c66f4 100644
--- a/graph-inventory/aai-client/pom.xml
+++ b/graph-inventory/aai-client/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>graph-inventory</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>aai-client</artifactId>
<build>
diff --git a/graph-inventory/fluent-builder-maven-plugin/pom.xml b/graph-inventory/fluent-builder-maven-plugin/pom.xml
index 5e62d5b1fc..6b3fd0f8bd 100644
--- a/graph-inventory/fluent-builder-maven-plugin/pom.xml
+++ b/graph-inventory/fluent-builder-maven-plugin/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>graph-inventory</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>fluent-builder-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
diff --git a/graph-inventory/pom.xml b/graph-inventory/pom.xml
index f5ccbc0244..b61bed954f 100644
--- a/graph-inventory/pom.xml
+++ b/graph-inventory/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>graph-inventory</artifactId>
<packaging>pom</packaging>
diff --git a/mso-api-handlers/mso-api-handler-common/pom.xml b/mso-api-handlers/mso-api-handler-common/pom.xml
index 4e92775d02..c31cc485ec 100644
--- a/mso-api-handlers/mso-api-handler-common/pom.xml
+++ b/mso-api-handlers/mso-api-handler-common/pom.xml
@@ -1,16 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
-
<parent>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handlers</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
-
-
<artifactId>mso-api-handler-common</artifactId>
-
<name>mso-api-handler-common</name>
<description>ONAP SO API Handler Common Libraries</description>
<properties>
@@ -78,8 +74,7 @@
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
+ <artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
diff --git a/mso-api-handlers/mso-api-handler-infra/pom.xml b/mso-api-handlers/mso-api-handler-infra/pom.xml
index b902564900..cd7c102c10 100644
--- a/mso-api-handlers/mso-api-handler-infra/pom.xml
+++ b/mso-api-handlers/mso-api-handler-infra/pom.xml
@@ -1,20 +1,16 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
-
<parent>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handlers</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
-
-
<artifactId>mso-api-handler-infra</artifactId>
-
<name>mso-api-handler-infra</name>
<description>ONAP SO API Handler Infra</description>
<properties>
- <camunda.version>7.10.0</camunda.version>
+ <camunda.version>7.14.0</camunda.version>
<camunda.bpm.assert.version>1.2</camunda.bpm.assert.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@@ -57,32 +53,15 @@
<version>3.25.0-GA</version>
</dependency>
<dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>io.swagger.core.v3</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger.version}</version>
- </dependency>
- <dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-jaxrs2</artifactId>
- <version>2.0.6</version>
+ <version>2.0.8</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
@@ -97,57 +76,17 @@
</exclusions>
</dependency>
<dependency>
- <groupId>org.springframework.retry</groupId>
- <artifactId>spring-retry</artifactId>
- </dependency>
- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.6</version>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>1.1.1</version>
- </dependency>
- <dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>org.json4s</groupId>
- <artifactId>json4s-jackson_2.12</artifactId>
- <version>${json4s-jackson-version}</version>
- </dependency>
- <dependency>
- <groupId>org.json4s</groupId>
- <artifactId>json4s-core_2.12</artifactId>
- <version>${json4s-core-version}</version>
- </dependency>
- <dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- </dependency>
- <dependency>
<groupId>javax.interceptor</groupId>
<artifactId>javax.interceptor-api</artifactId>
</dependency>
-
- <!-- Dependencies on other MSO Projects -->
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>mso-requests-db</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>org.onap.so</groupId>
<artifactId>mso-requests-db-repositories</artifactId>
@@ -158,7 +97,6 @@
<artifactId>mso-catalog-db</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- Test Dependencies -->
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
@@ -183,11 +121,6 @@
</dependency>
<dependency>
<groupId>com.github.java-json-tools</groupId>
- <artifactId>json-schema-core</artifactId>
- <version>1.2.8</version>
- </dependency>
- <dependency>
- <groupId>com.github.java-json-tools</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.2.8</version>
</dependency>
@@ -197,10 +130,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
@@ -208,15 +137,10 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.googlecode.junit-toolbox</groupId>
- <artifactId>junit-toolbox</artifactId>
- <version>2.4</version>
- </dependency>
- <dependency>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handler-common</artifactId>
<version>${project.version}</version>
@@ -229,17 +153,9 @@
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
- <groupId>org.onap.aaf.authz</groupId>
- <artifactId>aaf-cadi-client</artifactId>
- </dependency>
- <dependency>
<groupId>org.onap.aaf.authz</groupId>
<artifactId>aaf-cadi-aaf</artifactId>
<exclusions>
@@ -268,23 +184,7 @@
<artifactId>aaf-misc-rosetta</artifactId>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-core</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- <version>2.3.0</version>
- </dependency>
</dependencies>
-
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<pluginManagement>
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstances.java
index b1486c9686..a25a140334 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstances.java
@@ -20,6 +20,9 @@
package org.onap.so.apihandlerinfra;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.UUID;
@@ -72,6 +75,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -124,6 +128,9 @@ public class Onap3gppServiceInstances {
@Autowired
private ResponseHandler responseHandler;
+ @Value("${subnetCapability.config.file}")
+ private String subnetCapabilityConfigFile;
+
/**
* POST Requests for 3GPP Service create Instance on a version provided
*
@@ -583,13 +590,23 @@ public class Onap3gppServiceInstances {
}
}
- // To be implemented for fetching Subnet capabilities
private Response getSubnetCapabilities(List<SubnetTypes> subnetTypes, String version) throws ApiException {
ObjectMapper oMapper = new ObjectMapper();
- InputStream inputStream = TypeReference.class.getResourceAsStream("/subnetCapability.json");
+ String inputFileString = "";
Map<String, Object> subnetCapability = new HashMap<>();
+ BufferedReader br = null;
try {
- subnetCapability = oMapper.readValue(inputStream, Map.class);
+ logger.debug("Reading SubnetCapability file");
+ br = new BufferedReader(new FileReader(new File(subnetCapabilityConfigFile)));
+ StringBuilder sb = new StringBuilder();
+ String line = br.readLine();
+ while (line != null) {
+ sb.append(line);
+ sb.append("\n");
+ line = br.readLine();
+ }
+ inputFileString = sb.toString();
+ subnetCapability = oMapper.readValue(inputFileString, Map.class);
} catch (Exception e) {
logger.debug("Exception while reading subnet capability value from json", e);
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
index 7924ca304a..9a4d0a45df 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
@@ -26,6 +26,7 @@ package org.onap.so.apihandlerinfra;
import java.io.IOException;
import java.util.HashMap;
import java.util.Optional;
+import java.util.stream.Collectors;
import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml b/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml
index b46690f2a7..6064f73e23 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/resources/application.yaml
@@ -83,3 +83,7 @@ org:
adapters:
network:
encryptionKey: aa3871669d893c7fb8abbcda31b88b4f
+
+subnetCapability:
+ config:
+ file: /app/subnetCapability.json
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java
index f4ff19f53d..fb923faf78 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java
@@ -104,8 +104,8 @@ public class ManualTasksTest extends BaseTest {
RequestError expectedResponse = new RequestError();
ServiceException se = new ServiceException();
se.setMessageId("SVC0002");
- se.setText("Mapping of request to JSON object failed: Unrecognized token \'test\': "
- + "was expecting \'null\', \'true\', \'false\' or NaN\n at [Source: (String)\"test\"; line: 1, column: 9]");
+ se.setText(
+ "Mapping of request to JSON object failed: Unrecognized token \u0027test\u0027: was expecting (JSON String, Number, Array, Object or token \u0027null\u0027, \u0027true\u0027 or \u0027false\u0027)\n at [Source: (String)\"test\"; line: 1, column: 5]");
expectedResponse.setServiceException(se);
HttpHeaders headers = new HttpHeaders();
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstancesTest.java
index 95f00c3a39..14a87bf915 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstancesTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/Onap3gppServiceInstancesTest.java
@@ -187,7 +187,7 @@ public class Onap3gppServiceInstancesTest extends BaseTest {
String request = "{\"subnetTypes\":[\"AN\"]}";
QuerySubnetCapability subnetCapabilityRequest = MAPPER.readValue(request, QuerySubnetCapability.class);
String expectedResponse =
- "{\"AN\":{\"latency\":\"5\",\"maxNumberofUEs\":\"100\",\"maxThroughput\":\"150\",\"terminalDensity\":\"50\"}}";
+ "{\"AN\":{\"latency\":5,\"maxNumberofUEs\":\"100\",\"maxThroughput\":\"150\",\"terminalDensity\":\"50\"}}";
Response response = objUnderTest.getSliceSubnetCapabilities(subnetCapabilityRequest, "v1");
String actualResponse = (String) response.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
index d43bbb6ea0..b358f26cb2 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
@@ -2453,7 +2453,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
@@ -2498,7 +2498,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to get process-instance history from Camunda for requestId: f0a35706-efc4-4e27-80ea-a995d7a2a40f due to error: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to get process-instance history from Camunda for requestId: f0a35706-efc4-4e27-80ea-a995d7a2a40f due to error: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
@@ -2515,7 +2515,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to check for duplicate instance due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
@@ -2547,7 +2547,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
@@ -2567,7 +2567,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
@@ -2584,7 +2584,7 @@ public class ServiceInstancesTest extends BaseTest {
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
RequestError realResponse = mapper.readValue(response.getBody(), RequestError.class);
assertEquals(
- "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error",
+ "Unable to save instance to db due to error contacting requestDb: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Server Error: [no body]",
realResponse.getServiceException().getText());
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/resources/subnetCapability.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Onap3gppServiceInstancesTest/subnetCapability.json
index 0d5acef64a..55b3831502 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/resources/subnetCapability.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Onap3gppServiceInstancesTest/subnetCapability.json
@@ -1,25 +1,31 @@
{
"AN": {
- "latency": "5",
+ "latency": 5,
"maxNumberofUEs": "100",
"maxThroughput": "150",
"terminalDensity": "50"
},
"CN": {
- "latency": "10",
+ "latency": 10,
"maxThroughput": "50",
"maxNumberofConns": "100"
},
"TN_FH": {
- "latency": "10",
+ "latency": 10,
"maxThroughput": "100"
},
"TN_MH": {
- "latency": "5",
+ "latency": 5,
"maxThroughput": "50"
},
"TN_BH": {
- "latency": "10",
+ "latency": 10,
"maxThroughput": "100"
+ },
+ "AN_NF": {
+ "latency": 5,
+ "maxNumberofUEs": "100",
+ "maxThroughput": "150",
+ "terminalDensity": "50"
}
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
index 1429ac9b52..bcd36b8643 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml
@@ -140,3 +140,8 @@ org:
adapters:
network:
encryptionKey: aa3871669d893c7fb8abbcda31b88b4f
+
+subnetCapability:
+ config:
+ file: src/test/resources/Onap3gppServiceInstancesTest/subnetCapability.json
+
diff --git a/mso-api-handlers/mso-requests-db-repositories/pom.xml b/mso-api-handlers/mso-requests-db-repositories/pom.xml
index 8f623ad9e5..2f5c836979 100644
--- a/mso-api-handlers/mso-requests-db-repositories/pom.xml
+++ b/mso-api-handlers/mso-requests-db-repositories/pom.xml
@@ -1,15 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
-
<parent>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handlers</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
-
<artifactId>mso-requests-db-repositories</artifactId>
-
<name>mso-requests-db-repositories</name>
<description>SO Request Database JPA Respositories</description>
<properties>
diff --git a/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/db/request/SiteStatusTest.java b/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/db/request/SiteStatusTest.java
index 93218a2057..f5d08e942d 100644
--- a/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/db/request/SiteStatusTest.java
+++ b/mso-api-handlers/mso-requests-db-repositories/src/test/java/org/onap/so/db/request/SiteStatusTest.java
@@ -60,7 +60,7 @@ public class SiteStatusTest {
@Test
public void sortByCreated() {
- final PageRequest page1 = new PageRequest(0, 20, Direction.DESC, "created");
+ final PageRequest page1 = PageRequest.of(0, 20, Direction.DESC, "created");
SiteStatus example = new SiteStatus();
example.setStatus(true);
diff --git a/mso-api-handlers/mso-requests-db/pom.xml b/mso-api-handlers/mso-requests-db/pom.xml
index 6c1df3e450..ce1b960be3 100644
--- a/mso-api-handlers/mso-requests-db/pom.xml
+++ b/mso-api-handlers/mso-requests-db/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>mso-api-handlers</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-requests-db</artifactId>
diff --git a/mso-api-handlers/pom.xml b/mso-api-handlers/pom.xml
index 9463d5d6b6..28d30049a4 100644
--- a/mso-api-handlers/pom.xml
+++ b/mso-api-handlers/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-api-handlers</artifactId>
diff --git a/mso-catalog-db/pom.xml b/mso-catalog-db/pom.xml
index ff88b81461..80ad6cc86e 100644
--- a/mso-catalog-db/pom.xml
+++ b/mso-catalog-db/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>mso-catalog-db</artifactId>
@@ -64,7 +64,7 @@
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
- <version>2.2.3</version>
+ <version>2.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java
deleted file mode 100644
index 97f67a5438..0000000000
--- a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.rest.catalog.beans;
-
-import java.io.Serializable;
-import java.text.DateFormat;
-import java.util.Date;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.PrePersist;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import com.openpojo.business.annotation.BusinessKey;
-
-@Entity
-@Table(name = "heat_environment")
-public class HeatEnvironment implements Serializable {
-
- private static final long serialVersionUID = 768026109321305392L;
-
- @BusinessKey
- @Id
- @Column(name = "ARTIFACT_UUID")
- private String artifactUuid;
-
- @Column(name = "NAME")
- private String name = null;
-
- @Column(name = "DESCRIPTION")
- private String description = null;
-
- @Lob
- @Column(name = "BODY", columnDefinition = "LONGTEXT")
- private String environment = null;
-
- @Column(name = "ARTIFACT_CHECKSUM")
- private String artifactChecksum;
-
- @Column(name = "CREATION_TIMESTAMP", updatable = false)
- @Temporal(TemporalType.TIMESTAMP)
- private Date created;
-
- @BusinessKey
- @Column(name = "VERSION")
- private String version;
-
- @PrePersist
- protected void onCreate() {
- this.created = new Date();
- }
-
- @Override
- public boolean equals(final Object other) {
- if (!(other instanceof HeatEnvironment)) {
- return false;
- }
- HeatEnvironment castOther = (HeatEnvironment) other;
- return new EqualsBuilder().append(artifactUuid, castOther.artifactUuid).append(version, castOther.version)
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder().append(artifactUuid).append(version).toHashCode();
- }
-
- public String getVersion() {
- return version;
- }
-
- public void setVersion(String version) {
- this.version = version;
- }
-
- public String getArtifactUuid() {
- return this.artifactUuid;
- }
-
- public void setArtifactUuid(String artifactUuid) {
- this.artifactUuid = artifactUuid;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return this.description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public String getEnvironment() {
- return this.environment;
- }
-
- public void setEnvironment(String environment) {
- this.environment = environment;
- }
-
- public String getArtifactChecksum() {
- return artifactChecksum;
- }
-
- public void setArtifactChecksum(String artifactChecksum) {
- this.artifactChecksum = artifactChecksum;
- }
-
- public Date getCreated() {
- return created;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("Artifact UUID=" + this.artifactUuid);
- sb.append(", name=");
- sb.append(name);
- sb.append(", version=");
- sb.append(version);
- sb.append(", description=");
- sb.append(this.description == null ? "null" : this.description);
- sb.append(", body=");
- sb.append(this.environment == null ? "null" : this.environment);
- if (this.created != null) {
- sb.append(",creationTimestamp=");
- sb.append(DateFormat.getInstance().format(this.created));
- }
- return sb.toString();
- }
-}
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml
index abf2c8a634..1d68522595 100644
--- a/packages/docker/pom.xml
+++ b/packages/docker/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>packages</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
@@ -79,54 +79,6 @@
</build>
</image>
<image>
- <name>${docker.image.prefix}/vnfm-adapter</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
- <tags>
- <!--tag>${project.version}</tag-->
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.adapters:etsi-sol003-adapter-application</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
- <name>${docker.image.prefix}/mso-cnf-adapter</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.mso-cnf-adapter</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.adapters:mso-cnf-adapter</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
<name>${docker.image.prefix}/catalog-db-adapter</name>
<build>
<cleanup>try</cleanup>
@@ -223,78 +175,6 @@
</build>
</image>
<image>
- <name>${docker.image.prefix}/vfc-adapter</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.adapters:mso-vfc-adapter</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
- <name>${docker.image.prefix}/nssmf-adapter</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-nssmf-adapter</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.adapters:mso-nssmf-adapter</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
- <name>${docker.image.prefix}/so-oof-adapter</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.adapters:mso-oof-adapter</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
<name>${docker.image.prefix}/so-appc-orchestrator</name>
<build>
<cleanup>try</cleanup>
@@ -391,30 +271,6 @@
</build>
</image>
<image>
- <name>${docker.image.prefix}/so-monitoring</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.monitoring:so-monitoring-service</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
- <image>
<name>${docker.image.prefix}/so-simulator</name>
<build>
<cleanup>try</cleanup>
@@ -438,30 +294,6 @@
</assembly>
</build>
</image>
- <image>
- <name>${docker.image.prefix}/so-etsi-nfvo-ns-lcm</name>
- <build>
- <cleanup>try</cleanup>
- <dockerFile>docker-files/Dockerfile.so-app</dockerFile>
- <tags>
- <tag>${project.version}</tag>
- <tag>${project.version}-${maven.build.timestamp}</tag>
- <tag>${project.docker.latesttag.version}</tag>
- </tags>
- <assembly>
- <inline>
- <dependencySets>
- <dependencySet>
- <includes>
- <include>org.onap.so.etsi.nfvo:so-etsi-nfvo-ns-lcm-application</include>
- </includes>
- <outputFileNameMapping>app.jar</outputFileNameMapping>
- </dependencySet>
- </dependencySets>
- </inline>
- </assembly>
- </build>
- </image>
</images>
</configuration>
@@ -493,7 +325,7 @@
<goal>push</goal>
</goals>
<configuration>
- <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring,${docker.image.prefix}/so-simulator,${docker.image.prefix}/mso-nssmf-adapter,${docker.image.prefix}/so-oof-adapter,${docker.image.prefix}/mso-cnf-adapter,${docker.image.prefix}/so-etsi-nfvo-ns-lcm</image>
+ <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-simulator</image>
</configuration>
</execution>
</executions>
@@ -513,21 +345,11 @@
<dependencies>
<dependency>
<groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-adapter-application</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
<artifactId>mso-catalog-db-adapter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-cnf-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
<artifactId>mso-requests-db-adapter</artifactId>
<version>${project.version}</version>
</dependency>
@@ -543,21 +365,6 @@
</dependency>
<dependency>
<groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-vfc-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-nssmf-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>mso-oof-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
<artifactId>so-appc-orchestrator</artifactId>
<version>${project.version}</version>
</dependency>
@@ -577,19 +384,9 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring-service</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.onap.so.simulator</groupId>
<artifactId>so-simulator</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-application</artifactId>
- <version>${project.version}</version>
- </dependency>
</dependencies>
</project>
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-cnf-adapter b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-cnf-adapter
deleted file mode 100644
index b6b268c8a4..0000000000
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-cnf-adapter
+++ /dev/null
@@ -1,28 +0,0 @@
-
-FROM onap/so/base-image:1.0
-ARG http_proxy
-ENV HTTP_PROXY=$http_proxy
-ENV http_proxy=$HTTP_PROXY
-ARG https_proxy
-ENV HTTPS_PROXY=$https_proxy
-ENV https_proxy=$HTTPS_PROXY
-USER root
-RUN mkdir -p /app/config
-RUN mkdir -p /app/certificates
-RUN mkdir -p /app/logs
-RUN mkdir -p /app/ca-certificates
-RUN apk update && apk add apache2-utils
-COPY maven/app.jar /app
-COPY configs/logging/logback-spring.xml /app
-COPY scripts/start-app.sh /app
-COPY scripts/wait-for.sh /app
-COPY ca-certificates/onap-ca.crt /app/ca-certificates/onap-ca.crt
-RUN chown -R so:so /app
-USER so
-# Springboot configuration (required)
-VOLUME /app/config
-# Root certificates (optional)
-VOLUME /app/ca-certificates
-WORKDIR /app
-ENTRYPOINT ["/app/start-app.sh"]
-
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.so-nssmf-adapter b/packages/docker/src/main/docker/docker-files/Dockerfile.so-nssmf-adapter
deleted file mode 100644
index 19368fb597..0000000000
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.so-nssmf-adapter
+++ /dev/null
@@ -1,32 +0,0 @@
-FROM onap/so/base-image:1.0
-
-ARG http_proxy
-ENV HTTP_PROXY=$http_proxy
-ENV http_proxy=$HTTP_PROXY
-ARG https_proxy
-ENV HTTPS_PROXY=$https_proxy
-ENV https_proxy=$HTTPS_PROXY
-
-USER root
-RUN mkdir -p /app/config
-RUN mkdir -p /app/certificates
-RUN mkdir -p /app/logs
-RUN mkdir -p /app/ca-certificates
-RUN apk update && apk add apache2-utils
-
-COPY maven/app.jar /app
-COPY configs/logging/logback-spring.xml /app
-COPY scripts/start-app.sh /app
-COPY scripts/wait-for.sh /app
-COPY ca-certificates/onap-ca.crt /app/ca-certificates/onap-ca.crt
-RUN chown -R so:so /app
-
-USER so
-# Springboot configuration (required)
-VOLUME /app/config
-
-# Root certificates (optional)
-VOLUME /app/ca-certificates
-
-WORKDIR /app
-ENTRYPOINT ["/app/start-app.sh"]
diff --git a/packages/pom.xml b/packages/pom.xml
index 3df696c74b..a64be03165 100644
--- a/packages/pom.xml
+++ b/packages/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<artifactId>packages</artifactId>
diff --git a/pom.xml b/pom.xml
index 2cd4de3856..353ee7b92b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
<packaging>pom</packaging>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
<name>so</name>
<description>This Maven project is responsible to build and package all child projects - contributions in the MSO project.
This build can be configured to run Functional tests and to start/stop a jboss server + Mysql DB.
@@ -33,9 +33,7 @@
<module>so-sdn-clients</module>
<module>bpmn</module>
<module>cxf-logging</module>
- <module>so-monitoring</module>
<module>so-simulator</module>
- <module>so-etsi-nfvo</module>
<module>packages</module>
</modules>
<properties>
@@ -67,29 +65,30 @@
<snapshotNexusPath>content/repositories/snapshots/</snapshotNexusPath>
<publicNexusPath>content/repositories/public/</publicNexusPath>
<siteNexusPath>content/sites/site/org/onap/so/${project.version}/</siteNexusPath>
- <cxf.version>3.3.3</cxf.version>
+ <cxf.version>3.4.1</cxf.version>
<jax.ws.rs>2.1</jax.ws.rs>
- <springboot.version>2.1.5.RELEASE</springboot.version>
+ <springboot.version>2.3.7.RELEASE</springboot.version>
<aaf.version>2.1.21</aaf.version>
- <camunda.springboot.version>3.2.0</camunda.springboot.version>
+ <camunda.springboot.version>7.14.0</camunda.springboot.version>
<format.skipValidate>false</format.skipValidate>
<format.skipExecute>true</format.skipExecute>
<io.fabric8.version>0.33.0</io.fabric8.version>
<appc.client.version>1.7.2</appc.client.version>
- <bowman.client.version>0.8.0</bowman.client.version>
+ <bowman.client.version>0.9.0</bowman.client.version>
<aaf.cadi.version>2.1.15</aaf.cadi.version>
+ <so-etsi-sol003-adapter-version>1.7.1-SNAPSHOT</so-etsi-sol003-adapter-version>
</properties>
<distributionManagement>
<repository>
- <id>ecomp-releases</id>
+ <id>onap-releases</id>
<url>${nexusproxy}/${releaseNexusPath}</url>
</repository>
<snapshotRepository>
- <id>ecomp-snapshots</id>
+ <id>onap-snapshots</id>
<url>${nexusproxy}/${snapshotNexusPath}</url>
</snapshotRepository>
<site>
- <id>ecomp-site</id>
+ <id>onap-site</id>
<url>dav:${nexusproxy}${siteNexusPath}</url>
</site>
</distributionManagement>
@@ -126,21 +125,21 @@
<url>http://maven.restlet.com</url>
</pluginRepository>
<pluginRepository>
- <id>ecomp-public</id>
+ <id>onap-public</id>
<url>${nexusproxy}/${publicNexusPath}</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
- <id>ecomp-release</id>
+ <id>onap-release</id>
<url>${nexusproxy}/${releaseNexusPath}</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
- <id>ecomp-snapshots</id>
+ <id>onap-snapshots</id>
<url>${nexusproxy}/${snapshotNexusPath}</url>
<releases>
<enabled>false</enabled>
@@ -149,27 +148,13 @@
</pluginRepositories>
<repositories>
<repository>
- <id>ecomp-public</id>
+ <id>onap-public</id>
<url>https://nexus.onap.org/content/repositories/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
- <id>ecomp-releases</id>
- <url>https://nexus.onap.org/content/repositories/releases/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>ecomp-snapshots</id>
- <url>https://nexus.onap.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
<id>camunda-bpm</id>
<url>https://app.camunda.com/nexus/content/repositories/camunda-bpm/</url>
</repository>
@@ -178,7 +163,6 @@
<url>https://app.camunda.com/nexus/content/groups/public</url>
</repository>
<repository>
- <!-- TODO: remove from ONAP environemnt -->
<id>onap-releases</id>
<url>https://nexus.onap.org/content/repositories/releases/</url>
<snapshots>
@@ -186,7 +170,6 @@
</snapshots>
</repository>
<repository>
- <!-- TODO: remove from ONAP environemnt -->
<id>onap-snapshots</id>
<url>https://nexus.onap.org/content/repositories/snapshots/</url>
<releases>
@@ -217,10 +200,6 @@
</resource>
</resources>
<plugins>
- <!-- <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId>
- <version>1.6.7</version> <extensions>true</extensions> <configuration> <nexusUrl>${nexusproxy}</nexusUrl>
- <stagingProfileId>176c31dfe190a</stagingProfileId> <serverId>ecomp-staging</serverId>
- </configuration> </plugin> -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
@@ -936,6 +915,18 @@
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-junit-jupiter</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -951,7 +942,7 @@
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
- <version>5.2.4</version>
+ <version>6.5.7</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
diff --git a/so-etsi-nfvo/pom.xml b/so-etsi-nfvo/pom.xml
deleted file mode 100644
index 6845896fc0..0000000000
--- a/so-etsi-nfvo/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo</artifactId>
- <packaging>pom</packaging>
- <name>SO ETSI NFVO</name>
-
- <properties>
- <java.version>11</java.version>
- <version.java.compiler>11</version.java.compiler>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <version-swagger-codegen>2.3.1</version-swagger-codegen>
- <gson-fire-version>1.8.2</gson-fire-version>
- <retrofit-version>2.3.0</retrofit-version>
- <threetenbp-version>1.3.5</threetenbp-version>
- <oltu-version>1.0.1</oltu-version>
- <swagger-core-version>1.5.15</swagger-core-version>
- <okhttp3-version>3.14.0</okhttp3-version>
- <okhttp-version>2.7.5</okhttp-version>
- <okio-version>1.13.0</okio-version>
- <jaxb-api>2.3.0</jaxb-api>
- <snakeyaml-version>0.11</snakeyaml-version>
- <hamcrest-version>2.2</hamcrest-version>
- <equalsverifier-version>3.4.1</equalsverifier-version>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>${version.java.compiler}</source>
- <target>${version.java.compiler}</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <modules>
- <module>so-etsi-nfvo-ns-lcm</module>
- </modules>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/pom.xml
deleted file mode 100644
index 6c34efb0ff..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/pom.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <packaging>pom</packaging>
- <name>SO ETSI NFVO NS LCM Manager</name>
-
- <modules>
- <module>so-etsi-nfvo-ns-lcm-api</module>
- <module>so-etsi-nfvo-ns-lcm-database-service</module>
- <module>so-etsi-nfvo-ns-lcm-bpmn-flows</module>
- <module>so-etsi-nfvo-ns-lcm-service</module>
- <module>so-etsi-nfvo-ns-lcm-application</module>
- </modules>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/pom.xml
deleted file mode 100644
index 272ac0c11a..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/pom.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm-api</artifactId>
- <name>SO ETSI NFVO NS LCM Manager Api</name>
-
- <build>
- <plugins>
- <plugin>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <version>${version-swagger-codegen}</version>
- <executions>
- <execution>
- <id>so-etsi-nfvo-ns-lcm-api</id>
- <goals>
- <goal>generate</goal>
- </goals>
- <configuration>
- <inputSpec>${basedir}/src/main/resources/SOL005-NSLifecycleManagement-API.json</inputSpec>
- <language>java</language>
- <library>okhttp-gson</library>
- <output>${project.build.directory}/generated-sources/so-etsi-nfvo-ns-lcm-api</output>
- <apiPackage>org.onap.so.etsi.nfvo.ns.lcm.api</apiPackage>
- <modelPackage>org.onap.so.etsi.nfvo.ns.lcm.model</modelPackage>
- <generateApiTests>false</generateApiTests>
- <generateModelTests>false</generateModelTests>
- <configOptions>
- <sourceFolder>src/gen/java/main</sourceFolder>
- <withXml>true</withXml>
- <useRxJava2>true</useRxJava2>
- <serializableModel>true</serializableModel>
- <dateLibrary>java8-localdatetime</dateLibrary>
- </configOptions>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources>
- <source>${project.basedir}/target/generated-sources/so-etsi-nfvo-ns-lcm-api/src/gen/java/main</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-codegen-maven-plugin</artifactId>
- <goals>
- <goal>generate</goal>
- </goals>
- <versionRange>[2.2.0,)</versionRange>
- </pluginExecutionFilter>
- <action>
- <execute>
- <runOnIncremental>false</runOnIncremental>
- </execute>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- <dependencies>
- <dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- <version>${swagger-core-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-gson</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>retrofit</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>converter-scalars</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.oltu.oauth2</groupId>
- <artifactId>org.apache.oltu.oauth2.client</artifactId>
- <version>${oltu-version}</version>
- </dependency>
- <dependency>
- <groupId>io.gsonfire</groupId>
- <artifactId>gson-fire</artifactId>
- <version>${gson-fire-version}</version>
- </dependency>
- <dependency>
- <groupId>org.threeten</groupId>
- <artifactId>threetenbp</artifactId>
- <version>${threetenbp-version}</version>
- </dependency>
- <dependency>
- <groupId>io.reactivex.rxjava2</groupId>
- <artifactId>rxjava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.retrofit2</groupId>
- <artifactId>adapter-rxjava2</artifactId>
- <version>${retrofit-version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.squareup.okio</groupId>
- <artifactId>okio</artifactId>
- <version>${okio-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp3</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp3-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>logging-interceptor</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>com.squareup.okhttp</groupId>
- <artifactId>okhttp</artifactId>
- <version>${okhttp-version}</version>
- </dependency>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- </dependency>
- </dependencies>
-
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/src/main/resources/SOL005-NSLifecycleManagement-API.json b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/src/main/resources/SOL005-NSLifecycleManagement-API.json
deleted file mode 100644
index 8a7eb9d006..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-api/src/main/resources/SOL005-NSLifecycleManagement-API.json
+++ /dev/null
@@ -1,24383 +0,0 @@
-{
- "swagger":"2.0",
- "info":{
- "version":"1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1",
- "title":"SOL005 - NS Lifecycle Management Interface",
- "description":"SOL005 - NS Lifecycle Management Interface IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis\n",
- "license":{
- "name":"ETSI Forge copyright notice",
- "url":"https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- },
- "contact":{
- "name":"NFV-SOL WG"
- }
- },
- "externalDocs":{
- "description":"ETSI GS NFV-SOL 005 V2.7.1",
- "url":"https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf"
- },
- "basePath":"/nslcm/v1",
- "schemes":[
- "http",
- "https"
- ],
- "consumes":[
- "application/json"
- ],
- "produces":[
- "application/json"
- ],
- "paths":{
- "/api_versions":{
- "parameters":[
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":false,
- "type":"string"
- }
- ],
- "get":{
- "summary":"Retrieve API version information",
- "description":"The GET method reads API version information. This method shall follow the provisions specified in table 4.6.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not supported.\n",
- "responses":{
- "200":{
- "description":"API version information was read successfully. The response body shall contain 4.4 API version information, as defined in clause 4.4.1.13.\n",
- "schema":{
- "description":"This type represents API version information.\n",
- "type":"object",
- "required":[
- "uriPrefix",
- "apiVersions"
- ],
- "properties":{
- "uriPrefix":{
- "description":"Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n",
- "type":"string"
- },
- "apiVersions":{
- "description":"Version(s) supported for the API signalled by the uriPrefix attribute.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "version"
- ],
- "properties":{
- "version":{
- "description":"Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 4.6.1.\n",
- "type":"string"
- },
- "isDeprecated":{
- "description":"The Boolean is a data type having two values (TRUE and FALSE).\n",
- "type":"boolean"
- },
- "retirementDate":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Version":{
- "description":"The used API version.",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "413":{
- "description":"413 PAYLOAD TOO LARGE\nIf the payload body of a request is larger than the amount of data the API producer is willing or able to process, it shall respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for closing the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "414":{
- "description":"414 URI TOO LONG\nIf the request URI of a request is longer than the API producer is willing or able to process, it shall respond with this response code. This condition can e.g. be caused by passing long queries in the request URI of a GET request. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "422":{
- "description":"422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "429":{
- "description":"429 TOO MANY REQUESTS\nIf the API consumer has sent too many requests in a defined period of time and the API producer is able to detect that condition (\"rate limiting\"), the API producer shall respond with this response code, following the provisions in IETF RFC 6585 [17] for the use of the \"Retry-After\" HTTP header. The \"ProblemDetails\" structure shall be provided and shall include in the \"detail\" attribute more information about the source of the problem.\nThe period of time and allowed number of requests are configured within the API producer by means outside the scope of the present document.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances":{
- "parameters":[
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235.\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Create a NS instance resource.",
- "description":"The POST method creates a new NS instance resource. As the result of successfully executing this method, a new \"Individual NS instance\" resource as defined in clause 6.4.3 shall have been created, and the value of the \"instantiationState\" attribute in the representation of that resource shall be \"NOT_INSTANTIATED\". A notification of type NsIdentifierCreationNotification shall be triggered as part of successfully executing this method as defined in clause 6.5.2.6.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"CreateNsRequest",
- "in":"body",
- "required":true,
- "schema":{
- "type":"object",
- "required":[
- "nsdId",
- "nsName",
- "nsDescription"
- ],
- "properties":{
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsName":{
- "description":"Human-readable name of the NS instance to be created.\n",
- "type":"string"
- },
- "nsDescription":{
- "description":"Human-readable description of the NS instance to be created.\n",
- "type":"string"
- }
- }
- },
- "description":"The NS creation parameters, as defined in clause 6.5.2.7.\n"
- }
- ],
- "responses":{
- "201":{
- "description":"201 Created\nShall be returned when a new \"Individual NS instance\" resource and the associated NS instance identifier has been created successfully. The response body shall contain a representation of the created NS instance, as defined in clause 6.5.2.10. The HTTP response shall include a \"Location\" HTTP header that contains the resource URI of the created NS instance.\n",
- "schema":{
- "description":"This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
- "type":"object",
- "required":[
- "id",
- "nsInstanceName",
- "nsInstanceDescription",
- "nsdId",
- "nsdInfoId",
- "nsState",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsInstanceName":{
- "description":"Human readable name of the NS instance.\n",
- "type":"string"
- },
- "nsInstanceDescription":{
- "description":"Human readable description of the NS instance.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "flavourId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstance":{
- "description":"Information on constituent VNF(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n",
- "type":"object",
- "required":[
- "id",
- "vnfdId",
- "vnfProvider",
- "vnfProductName",
- "vnfSoftwareVersion",
- "vnfdVersion",
- "vnfPkgId",
- "instantiationState"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProvider":{
- "description":"Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfProductName":{
- "description":"Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfSoftwareVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfdVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfPkgId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "instantiationState":{
- "description":"The instantiation state of the VNF.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "instantiatedVnfInfo":{
- "description":"Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type":"object",
- "required":[
- "flavourId",
- "vnfState",
- "extCpInfo"
- ],
- "properties":{
- "flavourId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfState":{
- "type":"string",
- "enum":[
- "STARTED",
- "STOPPED"
- ]
- },
- "scaleStatus":{
- "description":"Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "maxScaleLevels":{
- "description":"Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "extCpInfo":{
- "description":"Information about the external CPs exposed by the VNF instance.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n",
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "extLinkPortId":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "associatedVnfcCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "associatedVnfVirtualLinkId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- },
- "extVirtualLinkInfo":{
- "description":"Information about the external VLs the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo":{
- "description":"External virtual links the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "vnfLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters":{
- "description":"Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "localizationLanguage":{
- "description":"Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type":"string"
- },
- "vnfcResourceInfo":{
- "description":"Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vduId",
- "computeResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vduId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "computeResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "storageResourceIds":{
- "description":"References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfcCpInfo":{
- "description":"CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfExtCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualLinkResourceInfo":{
- "description":"Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfLinkPorts":{
- "description":"Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualStorageResourceInfo":{
- "description":"Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "virtualStorageDescId",
- "storageResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualStorageDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "storageResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "pnfInfo":{
- "description":"Information on the PNF(s) that are part of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information about a PNF that is part of an NS instance. It shall comply with the provisions defined in Table 6.5.3.13-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfdInfoId",
- "pnfProfileId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpInfo":{
- "description":"This type represents the information about the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.17-1.\n",
- "type":"object",
- "required":[
- "cpInstanceId",
- "cpdId"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "virtualLinkInfo":{
- "description":"Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
- "type":"array",
- "items":{
- "description":"This type specifies the information about an NS VL instance. It shall comply with the provisions defined in Table 6.5.3.53-1\n",
- "type":"object",
- "required":[
- "id",
- "nsVirtualLinkDescId",
- "nsVirtualLinkProfileId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkDescId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- },
- "linkPort":{
- "description":"Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "nsCpHandle":{
- "description":"Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnffgInfo":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnffgdId",
- "vnfInstanceId",
- "pnfInfoId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceId":{
- "description":"Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdInfoId":{
- "description":"Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsVirtualLinkInfoId":{
- "description":"Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "nsCpHandle":{
- "description":"Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "sapInfo":{
- "description":"Information on the SAP(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n",
- "type":"object",
- "required":[
- "id",
- "sapdId",
- "sapName",
- "sapProtocolInfo"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP instance.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the SAP instance.\n",
- "type":"string"
- },
- "sapProtocolInfo":{
- "description":"Network protocol information for this SAP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "nestedNsInstanceId":{
- "description":"Identifier of the nested NS(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsState":{
- "description":"The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "monitoringParameter":{
- "description":"Performance metrics tracked by the NFVO (e.g. for auto-scaling purposes) as identified by the NS designer in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the NFVO, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.68-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the NSD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "nsScaleStatus":{
- "description":"Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
- "type":"array",
- "items":{
- "description":"This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
- "type":"object",
- "required":[
- "nsScalingAspectId",
- "nsScaleLevelId"
- ],
- "properties":{
- "nsScalingAspectId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsScaleLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "additionalAffinityOrAntiAffinityRule":{
- "description":"Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
- "type":"object",
- "required":[
- "affinityOrAntiAffiinty",
- "scope"
- ],
- "properties":{
- "vnfdId":{
- "description":"Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfProfileId":{
- "description":"Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "vnfInstanceId":{
- "description":"Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "affinityOrAntiAffiinty":{
- "description":"The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
- "type":"string",
- "enum":[
- "AFFINITY",
- "ANTI_AFFINITY"
- ]
- },
- "scope":{
- "description":"Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
- "type":"string",
- "enum":[
- "NFVI_POP",
- "ZONE",
- "ZONE_GROUP",
- "NFVI_NODE"
- ]
- }
- }
- }
- },
- "_links":{
- "type":"object",
- "description":"Links to resources related to this resource.",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nestedNsInstances":{
- "description":"Links to resources related to this notification.\n",
- "type":"array",
- "items":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- },
- "instantiate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "terminate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "update":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "scale":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "heal":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n"
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- },
- "get":{
- "summary":"Query multiple NS instances.",
- "description":"Query NS Instances.\nThe GET method queries information about multiple NS instances. This method shall support the URI query parameters, request and response data structures, and response codes, as specified in the Tables 6.4.2.3.2-1 and 6.4.2.3.2-2.\n",
- "parameters":[
- {
- "name":"filter",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. The NFVO shall support receiving this parameter as part of the URI query string. The OSS/BSS may supply this parameter. All attribute names that appear in the NsInstance and in data types referenced from it shall be supported by the NFVO in the filter expression.\n"
- },
- {
- "name":"all_fields",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Include all complex attributes in the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFVO shall support this parameter.\n"
- },
- {
- "name":"fields",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"\"Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFVO should support this parameter.\"\n"
- },
- {
- "name":"exclude_fields",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"\"Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFVO should support this parameter.\"\n"
- },
- {
- "name":"exclude_default",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"\"Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 for details. The NFVO shall support this parameter. The following attributes shall be excluded from the NsInstance structure in the response body if this parameter is provided, or none of the parameters \"all_fields,\" \"fields\", \"exclude_fields\", \"exclude_default\" are provided: - vnfInstances - pnfInfo - virtualLinkInfo - vnffgInfo - sapInfo - nsScaleStatus - additionalAffinityOrAntiAffinityRules\"\n"
- },
- {
- "name":"nextpage_opaque_marker",
- "in":"query",
- "description":"Marker to obtain the next page of a paged response. Shall be supported by the NFVO if the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource.\n",
- "required":false,
- "type":"string"
- },
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when information about zero or more NS instances has been queried successfully. The response body shall contain in an array the representations of zero or more NS instances, as defined in clause 6.5.2.8. If the \"filter\" URI parameter or one of the \"all_fields\", \"fields\" (if supported), \"exclude_fields\" (if supported) or \"exclude_default\" URI parameters was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013 [16], respectively. If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 [16].\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Link":{
- "description":"Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- }
- },
- "schema":{
- "type":"array",
- "items":{
- "properties":{
- "NsInstance":{
- "description":"This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
- "type":"object",
- "required":[
- "id",
- "nsInstanceName",
- "nsInstanceDescription",
- "nsdId",
- "nsdInfoId",
- "nsState",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsInstanceName":{
- "description":"Human readable name of the NS instance.\n",
- "type":"string"
- },
- "nsInstanceDescription":{
- "description":"Human readable description of the NS instance.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "flavourId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstance":{
- "description":"Information on constituent VNF(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n",
- "type":"object",
- "required":[
- "id",
- "vnfdId",
- "vnfProvider",
- "vnfProductName",
- "vnfSoftwareVersion",
- "vnfdVersion",
- "vnfPkgId",
- "instantiationState"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProvider":{
- "description":"Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfProductName":{
- "description":"Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfSoftwareVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfdVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfPkgId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "instantiationState":{
- "description":"The instantiation state of the VNF.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "instantiatedVnfInfo":{
- "description":"Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type":"object",
- "required":[
- "flavourId",
- "vnfState",
- "extCpInfo"
- ],
- "properties":{
- "flavourId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfState":{
- "type":"string",
- "enum":[
- "STARTED",
- "STOPPED"
- ]
- },
- "scaleStatus":{
- "description":"Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "maxScaleLevels":{
- "description":"Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "extCpInfo":{
- "description":"Information about the external CPs exposed by the VNF instance.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n",
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "extLinkPortId":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "associatedVnfcCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "associatedVnfVirtualLinkId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- },
- "extVirtualLinkInfo":{
- "description":"Information about the external VLs the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo":{
- "description":"External virtual links the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "vnfLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters":{
- "description":"Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "localizationLanguage":{
- "description":"Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type":"string"
- },
- "vnfcResourceInfo":{
- "description":"Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vduId",
- "computeResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vduId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "computeResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "storageResourceIds":{
- "description":"References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfcCpInfo":{
- "description":"CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfExtCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualLinkResourceInfo":{
- "description":"Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfLinkPorts":{
- "description":"Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualStorageResourceInfo":{
- "description":"Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "virtualStorageDescId",
- "storageResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualStorageDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "storageResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "pnfInfo":{
- "description":"Information on the PNF(s) that are part of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information about a PNF that is part of an NS instance. It shall comply with the provisions defined in Table 6.5.3.13-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfdInfoId",
- "pnfProfileId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpInfo":{
- "description":"This type represents the information about the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.17-1.\n",
- "type":"object",
- "required":[
- "cpInstanceId",
- "cpdId"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "virtualLinkInfo":{
- "description":"Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
- "type":"array",
- "items":{
- "description":"This type specifies the information about an NS VL instance. It shall comply with the provisions defined in Table 6.5.3.53-1\n",
- "type":"object",
- "required":[
- "id",
- "nsVirtualLinkDescId",
- "nsVirtualLinkProfileId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkDescId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- },
- "linkPort":{
- "description":"Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "nsCpHandle":{
- "description":"Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnffgInfo":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnffgdId",
- "vnfInstanceId",
- "pnfInfoId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceId":{
- "description":"Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdInfoId":{
- "description":"Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsVirtualLinkInfoId":{
- "description":"Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "nsCpHandle":{
- "description":"Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "sapInfo":{
- "description":"Information on the SAP(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n",
- "type":"object",
- "required":[
- "id",
- "sapdId",
- "sapName",
- "sapProtocolInfo"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP instance.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the SAP instance.\n",
- "type":"string"
- },
- "sapProtocolInfo":{
- "description":"Network protocol information for this SAP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "nestedNsInstanceId":{
- "description":"Identifier of the nested NS(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsState":{
- "description":"The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "monitoringParameter":{
- "description":"Performance metrics tracked by the NFVO (e.g. for auto-scaling purposes) as identified by the NS designer in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the NFVO, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.68-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the NSD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "nsScaleStatus":{
- "description":"Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
- "type":"array",
- "items":{
- "description":"This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
- "type":"object",
- "required":[
- "nsScalingAspectId",
- "nsScaleLevelId"
- ],
- "properties":{
- "nsScalingAspectId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsScaleLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "additionalAffinityOrAntiAffinityRule":{
- "description":"Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
- "type":"object",
- "required":[
- "affinityOrAntiAffiinty",
- "scope"
- ],
- "properties":{
- "vnfdId":{
- "description":"Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfProfileId":{
- "description":"Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "vnfInstanceId":{
- "description":"Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "affinityOrAntiAffiinty":{
- "description":"The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
- "type":"string",
- "enum":[
- "AFFINITY",
- "ANTI_AFFINITY"
- ]
- },
- "scope":{
- "description":"Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
- "type":"string",
- "enum":[
- "NFVI_POP",
- "ZONE",
- "ZONE_GROUP",
- "NFVI_NODE"
- ]
- }
- }
- }
- },
- "_links":{
- "type":"object",
- "description":"Links to resources related to this resource.",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nestedNsInstances":{
- "description":"Links to resources related to this notification.\n",
- "type":"array",
- "items":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- },
- "instantiate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "terminate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "update":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "scale":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "heal":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"Identifier of the NS instance.\n",
- "in":"path",
- "type":"string",
- "required":true
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235.\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "get":{
- "summary":"Read an individual NS instance resource.",
- "description":"The GET method retrieves information about a NS instance by reading an individual NS instance resource.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when information about an individual NS instance has been read successfully. The response body shall contain a representation of the NS instance, as defined in clause 6.5.2.10.\n",
- "schema":{
- "description":"This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1.\n",
- "type":"object",
- "required":[
- "id",
- "nsInstanceName",
- "nsInstanceDescription",
- "nsdId",
- "nsdInfoId",
- "nsState",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsInstanceName":{
- "description":"Human readable name of the NS instance.\n",
- "type":"string"
- },
- "nsInstanceDescription":{
- "description":"Human readable description of the NS instance.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "flavourId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstance":{
- "description":"Information on constituent VNF(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents a VNF instance. Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the different run-time information elements (CP, VL and link ports) used to represent the connectivity of a VNF.\n",
- "type":"object",
- "required":[
- "id",
- "vnfdId",
- "vnfProvider",
- "vnfProductName",
- "vnfSoftwareVersion",
- "vnfdVersion",
- "vnfPkgId",
- "instantiationState"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Name of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProvider":{
- "description":"Provider of the VNF and the VNFD. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfProductName":{
- "description":"Name to identify the VNF Product. The value is copied from the VNFD.\n",
- "type":"string"
- },
- "vnfSoftwareVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfdVersion":{
- "description":"A Version. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfPkgId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "instantiationState":{
- "description":"The instantiation state of the VNF.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "instantiatedVnfInfo":{
- "description":"Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n",
- "type":"object",
- "required":[
- "flavourId",
- "vnfState",
- "extCpInfo"
- ],
- "properties":{
- "flavourId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfState":{
- "type":"string",
- "enum":[
- "STARTED",
- "STOPPED"
- ]
- },
- "scaleStatus":{
- "description":"Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "maxScaleLevels":{
- "description":"Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "extCpInfo":{
- "description":"Information about the external CPs exposed by the VNF instance.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1.\n",
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "extLinkPortId":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "associatedVnfcCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "associatedVnfVirtualLinkId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- },
- "extVirtualLinkInfo":{
- "description":"Information about the external VLs the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinkInfo":{
- "description":"External virtual links the VNF instance is connected to.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "vnfLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- }
- }
- }
- },
- "monitoringParameters":{
- "description":"Performance metrics tracked by the VNFM (e.g. for auto-scaling purposes) as identified by the VNF provider in the VNFD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the VNFM, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.69-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the VNFD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "localizationLanguage":{
- "description":"Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type":"string"
- },
- "vnfcResourceInfo":{
- "description":"Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vduId",
- "computeResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vduId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "computeResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "storageResourceIds":{
- "description":"References to the VirtualStorage resources. The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfcCpInfo":{
- "description":"CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is associated to an external CP of the VNF instance. May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "cpdId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfExtCpId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpProtocolInfo":{
- "description":"Network protocol information for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "vnfLinkPortId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualLinkResourceInfo":{
- "description":"Information about the virtualised network resources used by the VLs of the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnfVirtualLinkDescId",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfLinkPorts":{
- "description":"Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "cpInstanceType":{
- "description":"Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present, and shall be absent otherwise. Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP.\n",
- "type":"string",
- "enum":[
- "VNFC_CP",
- "EXT_CP"
- ]
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "virtualStorageResourceInfo":{
- "description":"Information on the virtualised storage resource(s) used as storage for the VNF instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\n",
- "type":"object",
- "required":[
- "id",
- "virtualStorageDescId",
- "storageResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualStorageDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "storageResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "reservationId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "pnfInfo":{
- "description":"Information on the PNF(s) that are part of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information about a PNF that is part of an NS instance. It shall comply with the provisions defined in Table 6.5.3.13-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfdInfoId",
- "pnfProfileId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpInfo":{
- "description":"This type represents the information about the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.17-1.\n",
- "type":"object",
- "required":[
- "cpInstanceId",
- "cpdId"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "virtualLinkInfo":{
- "description":"Information on the VL(s) of the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED and if the NS instance has specified connectivity.\n",
- "type":"array",
- "items":{
- "description":"This type specifies the information about an NS VL instance. It shall comply with the provisions defined in Table 6.5.3.53-1\n",
- "type":"object",
- "required":[
- "id",
- "nsVirtualLinkDescId",
- "nsVirtualLinkProfileId"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkDescId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsVirtualLinkProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"Identifier(s) of the virtualised network resource(s) realizing the VL instance. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- },
- "linkPort":{
- "description":"Link ports of the VL instance. Cardinality of zero indicates that no port has yet been created for the VL instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "nsCpHandle":{
- "description":"Identifier of the CP/SAP instance to be connected to this link port. The value refers to a vnfExtCpInfo item in the VnfInstance, or a pnfExtCpInfo item in the PnfInfo, or a sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnffgInfo":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"Information on the VNFFG(s) of the NS instance.\n",
- "type":"object",
- "required":[
- "id",
- "vnffgdId",
- "vnfInstanceId",
- "pnfInfoId"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceId":{
- "description":"Identifier(s) of the constituent VNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdInfoId":{
- "description":"Identifier(s) of the constituent PNF instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsVirtualLinkInfoId":{
- "description":"Identifier(s) of the constituent VL instance(s) of this VNFFG instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "nsCpHandle":{
- "description":"Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1.\n",
- "type":"object",
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfExtCpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "pnfInfoId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfExtCpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsSapInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- },
- "sapInfo":{
- "description":"Information on the SAP(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents an SAP instance. It shall comply with the provisions defined in Table 6.5.3.67-1.\n",
- "type":"object",
- "required":[
- "id",
- "sapdId",
- "sapName",
- "sapProtocolInfo"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP instance.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the SAP instance.\n",
- "type":"string"
- },
- "sapProtocolInfo":{
- "description":"Network protocol information for this SAP.\n",
- "type":"array",
- "items":{
- "description":"This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1.\n",
- "type":"object",
- "required":[
- "layerProtocol",
- "ipOverEthernet"
- ],
- "properties":{
- "layerProtocol":{
- "description":"The identifier of layer(s) and protocol(s) associated to the network address information. Permitted values: IP_OVER_ETHERNET See note.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents information about a network address that has been assigned. It shall comply with the provisions defined in Table 6.5.3.18-1.\n",
- "type":"object",
- "required":[
- "macAddress",
- "ipAddresses"
- ],
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "addresses":{
- "description":"Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided).\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g., in case of egress connections. Exactly one of \"addresses\" or \"addressRange\" shall be present.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "type":{
- "description":"The type of the IP addresses\n",
- "type":"string",
- "enum":[
- "PV4",
- "PV6"
- ]
- },
- "addresses":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "isDynamic":{
- "description":"Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n",
- "type":"boolean"
- },
- "addressRange":{
- "description":"An IP address range used, e.g. in case of egress connections. See note.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "nestedNsInstanceId":{
- "description":"Identifier of the nested NS(s) of the NS instance.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsState":{
- "description":"The state of the NS instance. Permitted values: NOT_INSTANTIATED: The NS instance is terminated or not instantiated. INSTANTIATED: The NS instance is instantiated.\n",
- "type":"string",
- "enum":[
- "NOT_INSTANTIATED",
- "INSTANTIATED"
- ]
- },
- "monitoringParameter":{
- "description":"Performance metrics tracked by the NFVO (e.g. for auto-scaling purposes) as identified by the NS designer in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type represents a monitoring parameter that is tracked by the NFVO, for example, for auto-scaling purposes. It shall comply with the provisions defined in Table 6.5.3.68-1.\n",
- "type":"object",
- "required":[
- "id",
- "performanceMetric"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "name":{
- "description":"Human readable name of the monitoring parameter, as defined in the NSD.\n",
- "type":"string"
- },
- "performanceMetric":{
- "description":"Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n",
- "type":"string"
- }
- }
- }
- },
- "nsScaleStatus":{
- "description":"Status of each NS scaling aspect declared in the applicable DF, how \"big\" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n",
- "type":"array",
- "items":{
- "description":"This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
- "type":"object",
- "required":[
- "nsScalingAspectId",
- "nsScaleLevelId"
- ],
- "properties":{
- "nsScalingAspectId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsScaleLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "additionalAffinityOrAntiAffinityRule":{
- "description":"Information on the additional affinity or anti-affinity rule from NS instantiation operation. Shall not conflict with rules already specified in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
- "type":"object",
- "required":[
- "affinityOrAntiAffiinty",
- "scope"
- ],
- "properties":{
- "vnfdId":{
- "description":"Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfProfileId":{
- "description":"Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "vnfInstanceId":{
- "description":"Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "affinityOrAntiAffiinty":{
- "description":"The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
- "type":"string",
- "enum":[
- "AFFINITY",
- "ANTI_AFFINITY"
- ]
- },
- "scope":{
- "description":"Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
- "type":"string",
- "enum":[
- "NFVI_POP",
- "ZONE",
- "ZONE_GROUP",
- "NFVI_NODE"
- ]
- }
- }
- }
- },
- "_links":{
- "type":"object",
- "description":"Links to resources related to this resource.",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nestedNsInstances":{
- "description":"Links to resources related to this notification.\n",
- "type":"array",
- "items":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- },
- "instantiate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "terminate":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "update":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "scale":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "heal":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- },
- "delete":{
- "summary":"Delete NS instance resource.",
- "description":"Delete NS Identifier\nThis method deletes an individual NS instance resource. As the result of successfully executing this method, the \"Individual NS instance\" resource shall not exist any longer. A notification of type \"NsIdentifierDeletionNotification\" shall be triggered as part of successfully executing this method as defined in clause 6.5.2.7.\n",
- "responses":{
- "204":{
- "description":"204 No Content\nShall be returned when the \"Individual NS instance\" resource and the associated NS identifier have been deleted successfully. The response body shall be empty.\n",
- "headers":{
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "412":{
- "description":"412 PRECONDITION FAILED\nError: A precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. The response body should contain a ProblemDetails structure, in which the \"detail\" attribute should convey more information about the error.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}/instantiate":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"Identifier of the NS instance to be instantiated.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Instantiate a NS.",
- "description":"The POST method requests to instantiate a NS instance resource. The steps and conditions that apply as the result of successfully executing this method are specified in clause 6.4.1.2. In addition, once the NFVO has successfully completed the underlying NS LCM operation occurrence, it shall set the \"nsState\" attribute to the value \"INSTANTIATED\" in the representation of the \"Individual NS instance\" resource.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"InstantiateNsRequest",
- "in":"body",
- "required":true,
- "schema":{
- "type":"object",
- "required":[
- "nsFlavourId"
- ],
- "properties":{
- "nsFlavourId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapData":{
- "description":"Create data concerning the SAPs of this NS.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information related to a SAP of a NS. It shall comply with the provisions defined in Table 6.5.3.10-1.\n",
- "type":"object",
- "required":[
- "sapdId",
- "sapName",
- "description"
- ],
- "properties":{
- "sapdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the SAP.\n",
- "type":"string"
- },
- "sapProtocolData":{
- "description":"Parameters for configuring the network protocols on the SAP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "addpnfData":{
- "description":"Information on the PNF(s) that are part of this NS.\n",
- "type":"array",
- "items":{
- "description":"This type specifies an PNF to be added to the NS instance and the PNF Profile to use for this PNF. It shall comply with the provisions defined in Table 6.5.3.14-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfName",
- "pnfdId",
- "pnfProfileId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpData":{
- "description":"Address assigned for the PNF external CP(s).\n",
- "type":"array",
- "items":{
- "description":"This type represents the configuration data on the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.16-1.\n",
- "type":"object",
- "required":[
- "cpProtocolData"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Address assigned for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "vnfInstanceData":{
- "description":"Specify an existing VNF instance to be used in the NS. If needed, the VNF Profile to be used for this VNF instance is also provided. The DF of the VNF instance shall match the VNF DF present in the associated VNF Profile.\n",
- "type":"array",
- "items":{
- "description":"This type specifies an existing VNF instance to be used in the NS instance and if needed, the VNF Profile to use for this VNF instance. It shall comply with the provisions defined in Table 6.5.3.19-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfProfileId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "nestedNsInstanceData":{
- "description":"Specify an existing NS instance to be used as a nested NS within the NS. If needed, the NS Profile to be used for this nested NS instance is also provided. NOTE 2: The NS DF of each nested NS shall be one of the allowed flavours in the associated NSD (as referenced in the nestedNsd attribute of the NSD of the NS to be instantiated). NOTE 3: The NSD of each referenced NSs (i.e. each nestedInstanceId) shall match the one of the nested NSD in the composite NSD.\n",
- "type":"array",
- "items":{
- "description":"This type specifies an existing nested NS instance to be used in the NS instance and if needed, the NsProfile to use for this nested NS instance. It shall comply with the provisions defined in Table 6.5.3.19a-1.\n",
- "type":"object",
- "required":[
- "nestedNsInstanceId"
- ],
- "properties":{
- "nestedNsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsProfileId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "locationConstraints":{
- "description":"Defines the location constraints for the VNF to be instantiated as part of the NS instantiation. An example can be a constraint for the VNF to be in a specific geographic location..\n",
- "type":"array",
- "items":{
- "description":"This type represents the association of location constraints to a VNF instance to be created according to a specific VNF profile. It shall comply with the provisions defined in Table 6.5.3.20-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "locationConstraints":{
- "description":"This type represents location constraints for a VNF to be instantiated. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776 [13].\n",
- "type":"object",
- "required":[
- "countryCode"
- ],
- "properties":{
- "countryCode":{
- "description":"The two-letter ISO 3166 [29] country code in capital letters.\n",
- "type":"string"
- },
- "civicAddressElement":{
- "description":"Zero or more elements comprising the civic address.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "caType",
- "caValue"
- ],
- "properties":{
- "caType":{
- "description":"Describe the content type of caValue. The value of caType shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"integer"
- },
- "caValue":{
- "description":"Content of civic address element corresponding to the caType. The format caValue shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "additionalParamsForNs":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "additionalParamForNestedNs":{
- "description":"Allows the OSS/BSS to provide additional parameter(s) per nested NS instance (as opposed to the composite NS level, which is covered in additionalParamForNs, and as opposed to the VNF level, which is covered in additionalParamForVnf). This is for nested NS instances that are to be created by the NFVO as part of the NS instantiation and not for existing nested NS instances that are referenced for reuse.\n",
- "type":"array",
- "items":{
- "description":"This type specifies additional parameters on a per-nested NS instance basis. It shall comply with the provisions defined in Table 6.5.3.21a-1.\n",
- "type":"object",
- "required":[
- "nsProfileId"
- ],
- "properties":{
- "nsProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "additionalParam":{
- "description":"Additional parameters that are to be applied on a per nested NS instance.\n",
- "type":"array",
- "items":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- },
- "additionalParamsForVnf":{
- "description":"Allows the OSS/BSS to provide additional parameter(s) per VNF instance (as opposed to the composite NS level, which is covered in additionalParamsForNs and as opposed to the nested NS level, which is covered in additionalParamForNestedNs). This is for VNFs that are to be created by the NFVO as part of the NS instantiation and not for existing VNF that are referenced for reuse.\n",
- "type":"array",
- "items":{
- "description":"This type defines the additional parameters for the VNF instance to be created associated with an NS instance. It shall comply with the provisions defined in Table 6.5.3.22-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Human-readable name of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "startTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "nsInstantiationLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "additionalAffinityOrAntiAffinityRule":{
- "description":"Specifies additional affinity or anti-affinity constraint for the VNF instances to be instantiated as part of the NS instantiation. Shall not conflict with rules already specified in the NSD.\n",
- "type":"array",
- "items":{
- "description":"This type describes the additional affinity or anti-affinity rule applicable between the VNF instances to be instantiated in the NS instantiation operation request or between the VNF instances to be instantiated in the NS instantiation operation request and the existing VNF instances..\n",
- "type":"object",
- "required":[
- "affinityOrAntiAffiinty",
- "scope"
- ],
- "properties":{
- "vnfdId":{
- "description":"Reference to a VNFD. When the VNFD which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VNFD presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfProfileId":{
- "description":"Reference to a vnfProfile defined in the NSD. At least one VnfProfile which is used to instantiate VNF for the NS to be instantiated as the subject of the affinity or anti-affinity rule shall be present. When the VnfProfile which is not used to instantiate VNF, it presents all VNF instances of this type as the subjects of the affinity or anti-affinity rule. The VNF instance which the VnfProfile presents is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "vnfInstanceId":{
- "description":"Reference to the existing VNF instance as the subject of the affinity or anti-affinity rule. The existing VNF instance is not necessary as a part of the NS to be instantiated.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "affinityOrAntiAffiinty":{
- "description":"The type of the constraint. Permitted values: AFFINITY ANTI_AFFINITY.\n",
- "type":"string",
- "enum":[
- "AFFINITY",
- "ANTI_AFFINITY"
- ]
- },
- "scope":{
- "description":"Specifies the scope of the rule where the placement constraint applies. Permitted values: NFVI_POP ZONE ZONE_GROUP NFVI_NODE.\n",
- "type":"string",
- "enum":[
- "NFVI_POP",
- "ZONE",
- "ZONE_GROUP",
- "NFVI_NODE"
- ]
- }
- }
- }
- }
- }
- },
- "description":"Parameters for the instantiate NS operation, as defined in clause 6.5.2.11.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}/scale":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"Identifier of the NS instance to be scaled.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Scale a NS instance.",
- "description":"The POST method requests to scale a NS instance resource. The steps and conditions that apply as the result of successfully executing this method are specified in clause 6.4.1.2. In addition, once the NFVO has successfully completed the underlying NS LCM operation occurrence, it shall reflect the result of scaling the NS instance by updating the \"nsScaleStatus\" attribute in the representation of the \"Individual NS instance\" resource.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"body",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This type represents a request for the scale NS operation. Either the parameter scaleNsData or the parameter scaleVnfData, but not both shall be provided\n",
- "type":"object",
- "required":[
- "scaleType"
- ],
- "properties":{
- "scaleType":{
- "description":"Indicates the type of scaling to be performed. Possible values: - SCALE_NS - SCALE_VNF\n",
- "type":"string",
- "enum":[
- "SCALE_NS",
- "SCALE_VNF"
- ]
- },
- "scaleNsData":{
- "description":"This type represents the information to scale a NS.\n",
- "type":"object",
- "properties":{
- "vnfInstanceToBeAdded":{
- "description":"An existing VNF instance to be added to the NS instance as part of the scaling operation. If needed, the VNF Profile to be used for this VNF instance may also be provided.\n",
- "type":"array",
- "items":{
- "description":"This type specifies an existing VNF instance to be used in the NS instance and if needed, the VNF Profile to use for this VNF instance. It shall comply with the provisions defined in Table 6.5.3.19-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfProfileId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "vnfInstanceToBeRemoved":{
- "description":"The VNF instance to be removed from the NS instance as part of the scaling operation.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "scaleNsByStepsData":{
- "description":"This type represents the information used to scale an NS instance by one or more scaling steps, with respect to a particular NS scaling aspect. Performing a scaling step means increasing/decreasing the capacity of an NS instance in a discrete manner, i.e. moving from one NS scale level to another. The NS scaling aspects and their corresponding NS scale levels applicable to the NS instance are declared in the NSD.\n",
- "type":"object",
- "required":[
- "scalingDirection",
- "aspectId"
- ],
- "properties":{
- "scalingDirection":{
- "description":"The scaling direction. Possible values are: - SCALE_IN - SCALE_OUT.\n",
- "type":"string",
- "enum":[
- "SCALE_IN",
- "SCALE_OUT"
- ]
- },
- "aspectId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "numberOfSteps":{
- "description":"The number of scaling steps to be performed. Defaults to 1.\n",
- "type":"integer",
- "default":1
- }
- }
- },
- "scaleNsToLevelData":{
- "description":"This type represents the information used to scale an NS instance to a target size. The target size is either expressed as an NS instantiation level or as a list of NS scale levels, one per NS scaling aspect, of the current DF. The NS instantiation levels, the NS scaling aspects and their corresponding NS scale levels applicable to the NS instance are declared in the NSD.\n",
- "type":"object",
- "properties":{
- "nsInstantiationLevel":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsScaleInfo":{
- "description":"For each NS scaling aspect of the current DF, defines the target NS scale level to which the NS instance is to be scaled.\n",
- "type":"array",
- "items":{
- "description":"This type represents the target NS Scale level for each NS scaling aspect of the current deployment flavor.\n",
- "type":"object",
- "required":[
- "nsScalingAspectId",
- "nsScaleLevelId"
- ],
- "properties":{
- "nsScalingAspectId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "nsScaleLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- },
- "additionalParamsForNs":{
- "description":"This type defines the additional parameters for the VNF instance to be created associated with an NS instance. It shall comply with the provisions defined in Table 6.5.3.22-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Human-readable name of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "additionalParamsForVnf":{
- "description":"Allows the OSS/BSS to provide additional parameter(s) per VNF instance (as opposed to the NS level, which is covered in additionalParamforNs). This is for VNFs that are to be created by the NFVO as part of the NS scaling and not for existing VNF that are covered by the scaleVnfData.\n",
- "type":"array",
- "items":{
- "description":"This type defines the additional parameters for the VNF instance to be created associated with an NS instance. It shall comply with the provisions defined in Table 6.5.3.22-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Human-readable name of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "locationConstraints":{
- "description":"The location constraints for the VNF to be instantiated as part of the NS scaling. An example can be a constraint for the VNF to be in a specific geographic location.\n",
- "type":"array",
- "items":{
- "description":"This type represents the association of location constraints to a VNF instance to be created according to a specific VNF profile. It shall comply with the provisions defined in Table 6.5.3.20-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "locationConstraints":{
- "description":"This type represents location constraints for a VNF to be instantiated. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776 [13].\n",
- "type":"object",
- "required":[
- "countryCode"
- ],
- "properties":{
- "countryCode":{
- "description":"The two-letter ISO 3166 [29] country code in capital letters.\n",
- "type":"string"
- },
- "civicAddressElement":{
- "description":"Zero or more elements comprising the civic address.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "caType",
- "caValue"
- ],
- "properties":{
- "caType":{
- "description":"Describe the content type of caValue. The value of caType shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"integer"
- },
- "caValue":{
- "description":"Content of civic address element corresponding to the caType. The format caValue shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "scaleVnfData":{
- "description":"The necessary information to scale the referenced NS instance. It shall be present when scaleType = SCALE_VNF.\n",
- "type":"array",
- "items":{
- "description":"This type represents defines the information to scale a VNF instance to a given level, or to scale a VNF instance by steps.\n",
- "type":"object",
- "required":[
- "vnfInstanceid",
- "scaleVnfType"
- ],
- "properties":{
- "vnfInstanceid":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "scaleVnfType":{
- "description":"Type of the scale VNF operation requested. Allowed values are: - SCALE_OUT - SCALE_IN - SCALE_TO_INSTANTIATION_LEVEL - SCALE_TO_SCALE_LEVEL(S) The set of types actually supported depends on the capabilities of the VNF being managed.\n",
- "type":"string",
- "enum":[
- "SCALE_OUT",
- "SCALE_IN",
- "SCALE_TO_INSTANTIATION_LEVEL",
- "SCALE_TO_SCALE_LEVEL(S)"
- ]
- },
- "scaleToLevelData":{
- "description":"This type describes the information used to scale a VNF instance to a target size. The target size is either expressed as an instantiation level of that DF as defined in the VNFD, or given as a list of scale levels, one per scaling aspect of that DF. Instantiation levels and scaling aspects are declared in the VNFD. The NFVO shall then invoke the ScaleVnfToLevel operation towards the appropriate VNFM..\n",
- "type":"object",
- "properties":{
- "vnfInstantiationLevelId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfScaleInfo":{
- "description":"For each scaling aspect of the current deployment flavor, indicates the target scale level to which the VNF is to be scaled.\n",
- "type":"array",
- "items":{
- "required":[
- "aspectId",
- "scaleLevel"
- ],
- "type":"object",
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "scaleLevel":{
- "description":"Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n",
- "type":"integer"
- }
- }
- }
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "scaleByStepData":{
- "description":"This type describes the information to scale a VNF instance by steps. The NFVO shall then invoke the Scale VNF operation towards the appropriate VNFM.\n",
- "type":"object",
- "required":[
- "aspectId"
- ],
- "properties":{
- "aspectId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "numberOfSteps":{
- "description":"Number of scaling steps. It shall be a positive number. Defaults to 1. The VNF provider defines in the VNFD whether or not a particular VNF supports performing more than one step at a time. Such a property in the VNFD applies for all instances of a particular VNF.\n",
- "type":"integer",
- "default":1
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- }
- },
- "scaleTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- }
- }
- },
- "description":"Parameters for the scale NS operation, as defined in clause 6.5.2.14.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}/update":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"Identifier of the NS instance to be updated.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Updates a NS instance.",
- "description":"The POST method updates an NS instance.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"body",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This operation supports the update of a NS instance, It shall comply with the provisions defined in Table 6.5.2.12-1.\n",
- "type":"object",
- "required":[
- "updateType"
- ],
- "properties":{
- "updateType":{
- "description":"The type of update. It determines also which one of the following parameters is present in the operation. Possible values include: * ADD_VNF: Adding existing VNF instance(s) * REMOVE_VNF: Removing VNF instance(s) * INSTANTIATE_VNF: Instantiating new VNF(s) * CHANGE_VNF_DF: Changing VNF DF * OPERATE_VNF: Changing VNF state, * MODIFY_VNF_INFORMATION: Modifying VNF information and/or the configurable properties of VNF instance(s) * CHANGE_EXTERNAL_VNF_CONNECTIVITY: Changing the external connectivity of VNF instance(s) * ADD_SAP: Adding SAP(s) * REMOVE_SAP: Removing SAP(s) * ADD_NESTED_NS: Adding existing NS instance(s) as nested NS(s) * REMOVE_NESTED_NS: Removing existing nested NS instance(s) * ASSOC_NEW_NSD_VERSION: Associating a new NSD version to the NS instance * MOVE_VNF: Moving VNF instance(s) from one origin NS instance to another target NS instance * ADD_VNFFG: Adding VNFFG(s) * REMOVE_VNFFG: Removing VNFFG(s) * UPDATE_VNFFG: Updating VNFFG(s) * CHANGE_NS_DF: Changing NS DF * ADD_PNF: Adding PNF * MODIFY_PNF: Modifying PNF * REMOVE_PNF: Removing PNF\n",
- "type":"string",
- "enum":[
- "ADD_VNF",
- "REMOVE_VNF",
- "INSTANTIATE_VNF",
- "CHANGE_VNF_DF",
- "OPERATE_VNF",
- "MODIFY_VNF_INFORMATION",
- "CHANGE_EXTERNAL_VNF_CONNECTIVITY",
- "ADD SAP",
- "REMOVE_SAP",
- "ADD_NESTED_NS",
- "REMOVE_NESTED_NS",
- "ASSOC_NEW_NSD_VERSION",
- "MOVE_VNF",
- "ADD_VNFFG",
- "REMOVE_VNFFG",
- "UPDATE_VNFFG",
- "CHANGE_NS_DF",
- "ADD_PNF",
- "MODIFY_PNF",
- "REMOVE_PNF"
- ]
- },
- "addVnfIstance":{
- "description":"Identifies an existing VNF instance to be added to the NS instance. It shall be present only if updateType = \"ADD_VNF\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies an existing VNF instance to be used in the NS instance and if needed, the VNF Profile to use for this VNF instance. It shall comply with the provisions defined in Table 6.5.3.19-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfProfileId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "removeVnfInstanceId":{
- "description":"Identifies an existing VNF instance to be removed from the NS instance. It contains the identifier(s) of the VNF instances to be removed. It shall be present only if updateType = \"REMOVE_VNF.\" Note: If a VNF instance is removed from a NS and this NS was the last one for which this VNF instance was a part, the VNF instance is terminated by the NFVO.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "instantiateVnfData":{
- "description":"Identifies the new VNF to be instantiated. It can be used e.g. for the bottom-up NS creation. It shall be present only if updateType = \"INSTANTIATE_VNF\".\n",
- "type":"array",
- "items":{
- "description":"This type represents the information related to a SAP of a NS. The InstantiateVnfData data type specifies the parameters that are needed for VNF instantiation. This information element is used for the bottom-up NS creation when the OSS/BSS explicitly requests VNF instantiation for a given NS. When the NFVO invokes the Instantiate VNF update operation, a set of these parameters are then passed by the NFVO to the VNFM. It shall comply with the provisions defined in Table 6.5.3.24-1.\n",
- "type":"object",
- "required":[
- "vnfdId",
- "vnfFlavourId"
- ],
- "properties":{
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfFlavourId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfInstantiationLevelId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"Human-readable name of the VNF instance to be created.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"Human-readable description of the VNF instance to be created.\n",
- "type":"string"
- },
- "extVirtualLinks":{
- "description":"Information about external VLs to connect the VNF to.\n",
- "type":"array",
- "items":{
- "description":"This type represents an external VL. It shall comply with the provisions defined in Table 6.5.3.26-1.\n",
- "type":"object",
- "required":[
- "resourceId",
- "extCps"
- ],
- "properties":{
- "extVirtualLinkId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "extCps":{
- "description":"External CPs of the VNF to be connected to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents configuration information for external CPs created from a CPD.\n",
- "type":"object",
- "required":[
- "cpdId"
- ],
- "properties":{
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpConfig":{
- "description":"List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type":"object",
- "properties":{
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "linkPortId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId.\n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts":{
- "description":"Externally provided link ports to be used to connect external connection points to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinks":{
- "description":"Information about internal VLs that are managed by other entities than the VNFM.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally-managed internal VL. It shall comply with the provisions defined in Table 6.5.3.27-1.\n",
- "type":"object",
- "required":[
- "vnfVirtualLinkDescId",
- "resourceId"
- ],
- "properties":{
- "extManagedVirtualLinkId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "localizationLanguage":{
- "description":"Localization language of the VNF to be instantiated. The value shall comply with the format defined in IETF RFC 5646.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "locationConstraints":{
- "description":"This type represents the association of location constraints to a VNF instance to be created according to a specific VNF profile. It shall comply with the provisions defined in Table 6.5.3.20-1.\n",
- "type":"object",
- "required":[
- "vnfProfileId"
- ],
- "properties":{
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "locationConstraints":{
- "description":"This type represents location constraints for a VNF to be instantiated. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776 [13].\n",
- "type":"object",
- "required":[
- "countryCode"
- ],
- "properties":{
- "countryCode":{
- "description":"The two-letter ISO 3166 [29] country code in capital letters.\n",
- "type":"string"
- },
- "civicAddressElement":{
- "description":"Zero or more elements comprising the civic address.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "caType",
- "caValue"
- ],
- "properties":{
- "caType":{
- "description":"Describe the content type of caValue. The value of caType shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"integer"
- },
- "caValue":{
- "description":"Content of civic address element corresponding to the caType. The format caValue shall comply with Section 3.4 of IETF RFC 4776 [13].\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "changeVnfFlavourData":{
- "description":"Identifies the new DF of the VNF instance to be changed to. It shall be present only if updateType = \"CHANGE_VNF_DF\".\n",
- "type":"array",
- "items":{
- "description":"The type represents the information that is requested to be changed deployment flavor for an existing VNF instance. It shall comply with the provisions defined in Table 6.5.3.25-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "newFlavourId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "newFlavourId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "instantiationLevelId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "extVirtualLinks":{
- "description":"Information about external VLs to connect the VNF to.\n",
- "type":"array",
- "items":{
- "description":"This type represents an external VL. It shall comply with the provisions defined in Table 6.5.3.26-1.\n",
- "type":"object",
- "required":[
- "resourceId",
- "extCps"
- ],
- "properties":{
- "extVirtualLinkId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "extCps":{
- "description":"External CPs of the VNF to be connected to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents configuration information for external CPs created from a CPD.\n",
- "type":"object",
- "required":[
- "cpdId"
- ],
- "properties":{
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpConfig":{
- "description":"List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type":"object",
- "properties":{
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "linkPortId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId.\n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts":{
- "description":"Externally provided link ports to be used to connect external connection points to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extManagedVirtualLinks":{
- "description":"information about internal VLs that are managed by NFVO.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally-managed internal VL. It shall comply with the provisions defined in Table 6.5.3.27-1.\n",
- "type":"object",
- "required":[
- "vnfVirtualLinkDescId",
- "resourceId"
- ],
- "properties":{
- "extManagedVirtualLinkId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfVirtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "operateVnfData":{
- "description":"Identifies the state of the VNF instance to be changed. It shall be present only if updateType = \"OPERATE_VNF\".\n",
- "type":"array",
- "items":{
- "description":"This type represents a VNF instance for which the operational state needs to be changed and the requested new state. It shall comply with the provisions defined in Table 6.5.3.31-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "changeStateTo"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "changeStateTo":{
- "description":"STARTED - The VNF instance is up and running. STOPPED - The VNF instance has been shut down.\n",
- "type":"string",
- "enum":[
- "STARTED",
- "STOPPED"
- ]
- },
- "stopType":{
- "description":"* FORCEFUL: The VNFM will stop the VNF immediately after accepting the request.\n* GRACEFUL: The VNFM will first arrange to take the VNF out of service after accepting the request. Once that operation is successful or once\n the timer value specified in the \"gracefulStopTimeout\" attribute\n expires, the VNFM will stop the VNF.\n",
- "type":"string",
- "enum":[
- "FORCEFUL",
- "GRACEFUL"
- ]
- },
- "gracefulStopTimeout":{
- "description":"The time interval (in seconds) to wait for the VNF to be taken out of service during graceful stop, before stopping the VNF.\n",
- "type":"integer"
- },
- "additionalParam":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "modifyVnfInfoData":{
- "description":"Identifies the VNF information parameters and/or the configurable properties of VNF instance to be modified. It shall be present only if updateType = \"MODIFY_VNF_INFORMATION\".\n",
- "type":"array",
- "items":{
- "description":"This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
- "type":"object",
- "required":[
- "vnfInstanceId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "changeExtVnfConnectivityData":{
- "description":"Specifies the new external connectivity data of the VNF instance to be changed. It shall be present only if updateType = \"CHANGE_EXTERNAL_VNF_CONNECTIVITY\".\n",
- "type":"array",
- "items":{
- "description":"This type describes the information invoked by the NFVO to change the external VNF connectivity information maintained by the VNFM. The types of changes that this operation supports are: 1) Disconnect the external CPs that are connected to a particular external VL, and connect them to a different external VL. 2) Change the connectivity parameters of the existing external CPs, including changing addresses. NOTE: Depending on the capabilities of the underlying VIM resources, certain changes (e.g. modifying the IP address assignment) might not be supported without deleting the resource and creating another one with the modified configuration. This type shall comply with the provisions defined in Table 6.5.3.33-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "extVirtualLinks"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "extVirtualLinks":{
- "description":"Information about external VLs to change (e.g. connect the VNF to).\n",
- "type":"array",
- "items":{
- "description":"This type represents an external VL. It shall comply with the provisions defined in Table 6.5.3.26-1.\n",
- "type":"object",
- "required":[
- "resourceId",
- "extCps"
- ],
- "properties":{
- "extVirtualLinkId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "extCps":{
- "description":"External CPs of the VNF to be connected to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents configuration information for external CPs created from a CPD.\n",
- "type":"object",
- "required":[
- "cpdId"
- ],
- "properties":{
- "cpdId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "cpConfig":{
- "description":"List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
- "type":"object",
- "properties":{
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "linkPortId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Parameters for configuring the network protocols on the link port that connects the CP to a VL. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\": * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing external CP instance\n addressed by cpInstanceId.\n* At least one of these attributes shall be present for a to-be-created external CP instance or an existing external\n CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a pre-created link port,\n and the VNFM can use means outside the scope of the present\n document to obtain the pre-configured address information for the\n connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the cpProtocolData can be used with the\n pre-created link port referenced by \"linkPortId\".\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "extLinkPorts":{
- "description":"Externally provided link ports to be used to connect external connection points to this external VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "addSap":{
- "description":"Identifies a new SAP to be added to the NS instance. It shall be present only if updateType = \"ADD_SAP.\"\n",
- "type":"array",
- "items":{
- "description":"This type represents the information related to a SAP of a NS. It shall comply with the provisions defined in Table 6.5.3.10-1.\n",
- "type":"object",
- "required":[
- "sapdId",
- "sapName",
- "description"
- ],
- "properties":{
- "sapdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the SAP.\n",
- "type":"string"
- },
- "sapProtocolData":{
- "description":"Parameters for configuring the network protocols on the SAP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "removeSapId":{
- "description":"The identifier an existing SAP to be removed from the NS instance. It shall be present only if updateType = \"REMOVE_SAP.\"\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "addNestedNsData":{
- "description":"The identifier of an existing nested NS instance to be added to (nested within) the NS instance. It shall be present only if updateType = \"ADD_NESTED_NS\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies an existing nested NS instance to be used in the NS instance and if needed, the NsProfile to use for this nested NS instance. It shall comply with the provisions defined in Table 6.5.3.19a-1.\n",
- "type":"object",
- "required":[
- "nestedNsInstanceId"
- ],
- "properties":{
- "nestedNsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsProfileId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- },
- "removeNestedNsId":{
- "description":"The identifier of an existing nested NS instance to be removed from the NS instance. It shall be present only if updateType = \"REMOVE_NESTED_NS\".\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "assocNewNsdVersionData":{
- "description":"This type specifies a new NSD version that is associated to the NS instance. After issuing the Update NS operation with updateType = \"AssocNewNsdVersion\", the NFVO shall use the referred NSD as a basis for the given NS instance. Different versions of the same NSD have same nsdInvariantId, but different nsdId attributes, therefore if the nsdInvariantId of the NSD version that is to be associated to this NS instance is different from the one used before, the NFVO shall reject the request. Only new versions of the same NSD can be associated to an existing NS instance. This data type shall comply with the provisions defined in Table 6.5.3.34-1.\n",
- "type":"object",
- "required":[
- "newNsdId"
- ],
- "properties":{
- "newNsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sync":{
- "description":"Specify whether the NS instance shall be automatically synchronized to the new NSD by the NFVO (in case of true value) or the NFVO shall not do any action (in case of a false value) and wait for further guidance from OSS/BSS (i.e. waiting for OSS/BSS to issue NS lifecycle management operation to explicitly add/remove VNFs and modify information of VNF instances according to the new NSD). The synchronization to the new NSD means e.g. instantiating/adding those VNFs whose VNFD is referenced by the new NSD version but not referenced by the old one, terminating/removing those VNFs whose VNFD is referenced by the old NSD version but not referenced by the new NSD version, modifying information of VNF instances to the new applicable VNFD provided in the new NSD version. A cardinality of 0 indicates that synchronization shall not be done.\n",
- "type":"boolean"
- }
- }
- },
- "moveVnfInstanceData":{
- "description":"Specify existing VNF instance to be moved from one NS instance to another NS instance. It shall be present only if updateType = MOVE_VNF\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies existing VNF instances to be moved from one NS instance (source) to another NS instance (destination). The NS instance defined in the Update NS operation indicates the source NS instance and the destination NS instance is specified in this data type (referred to targetNsInstanceId). It shall comply with the provisions defined in Table 6.5.3.35-1.\n",
- "type":"object",
- "required":[
- "targetNsInstanceId"
- ],
- "properties":{
- "targetNsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceId":{
- "description":"Specify the VNF instance that is moved.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "addVnffg":{
- "description":"Specify the new VNFFG to be created to the NS Instance. It shall be present only if updateType = \"ADD_VNFFG\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies the parameters used for the creation of a new VNFFG instance. It shall comply with the provisions defined in Table 6.5.3.36-1.\n",
- "type":"object",
- "required":[
- "vnffgdId",
- "vnffgName",
- "description"
- ],
- "properties":{
- "targetNsInstanceId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnffgName":{
- "description":"Human readable name for the VNFFG.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the VNFFG.\n",
- "type":"string"
- }
- }
- }
- },
- "removeVnffgId":{
- "description":"Identifier of an existing VNFFG to be removed from the NS Instance. It shall be present only if updateType = \"REMOVE_VNFFG\".\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "updateVnffg":{
- "description":"Specify the new VNFFG Information data to be updated for a VNFFG of the NS Instance. It shall be present only if updateType = \"UPDATE_VNFFG\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies the parameters used for the update of an existing VNFFG instance. It shall comply with the provisions defined in Table 6.5.3.37-1.\n",
- "type":"object",
- "required":[
- "vnffgInfoId"
- ],
- "properties":{
- "vnffgInfoId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "nfp":{
- "description":"Indicate the desired new NFP(s) for a given VNFFG after the operations of addition/removal of NS components (e.g. VNFs, VLs, etc.) have been completed, or indicate the updated or newly created NFP classification and selection rule which applied to an existing NFP.\n",
- "type":"array",
- "items":{
- "description":"This type contains information used to create or modify NFP instance parameters for the update of an existing VNFFG instance. It shall comply with the provisions defined in Table 6.5.3.38-1.\n",
- "type":"object",
- "properties":{
- "nfpInfoId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "nfpName":{
- "description":"Human readable name for the NFP. It shall be present for the new NFP, and it may be present otherwise. It shall be present for the new NFP, and it may be present otherwise.\n",
- "type":"string"
- },
- "description":{
- "description":"Human readable description for the NFP. It shall be present for the new NFP, and it may be present otherwise. It shall be present for the new NFP, and it may be present otherwise.\n",
- "type":"string"
- },
- "cpGroup":{
- "description":"Group(s) of CPs and/or SAPs which the NFP passes by. Cardinality can be 0 if only updated or newly created NFP classification and selection rule which applied to an existing NFP is provided. At least a CP or an nfpRule shall be present. When multiple identifiers are included, the position of the identifier in the cpGroup value specifies the position of the group in the path.\n",
- "type":"array",
- "items":{
- "description":"This type represents describes a group of CPs and/or SAPs pairs associated to the same position in an NFP. It shall comply with the provisions defined in Table 6.5.3.71-1.\n",
- "type":"object",
- "properties":{
- "cpPairInfo":{
- "description":"One or more pair(s) of ingress and egress CPs or SAPs which the NFP passes by. All CP or SAP pairs in a group shall be instantiated from connection point descriptors or service access point descriptors referenced in the corresponding NfpPositionDesc.\n",
- "type":"array",
- "minItems":1,
- "items":{
- "description":"This type represents describes a pair of ingress and egress CPs or SAPs which the NFP passes by. It shall comply with the provisions defined in Table 6.5.3.72-1.\n",
- "type":"object",
- "properties":{
- "vnfExtCpIds":{
- "description":"Identifier(s) of the VNF CP(s) which form the pair. The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates that the CP or SAP is used both as an ingress and egress port at a particular NFP position.\n",
- "type":"array",
- "maxItems":2,
- "items":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- },
- "pnfExtCpIds":{
- "description":"Identifier(s) of the PNF CP(s) which form the pair. The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates that the CP or SAP is used both as an ingress and egress port at a particular NFP position.\n",
- "type":"array",
- "maxItems":2,
- "items":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "sapIds":{
- "description":"Identifier(s) of the SAP(s) which form the pair. The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates that the CP or SAP is used both as an ingress and egress port at a particular NFP position.\n",
- "type":"array",
- "maxItems":2,
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "forwardingBehaviour":{
- "description":"Identifies a rule to apply to forward traffic to the ingress CPs or SAPs of the group. Permitted values: * ALL = Traffic flows shall be forwarded simultaneously to all CPs or SAPs of the group. * LB = Traffic flows shall be forwarded to one CP or SAP of the group selected based on a loadbalancing algorithm.\n",
- "type":"string",
- "enum":[
- "ALL",
- "LB"
- ]
- },
- "forwardingBehaviourInputParameters":{
- "description":"This type represents provides input parameters to configure the forwarding behaviour. It shall comply with the provisions defined in Table 6.5.3.73-1.\n",
- "type":"object",
- "properties":{
- "algortihmName":{
- "description":"May be included if forwarding behaviour is equal to LB. Shall not be included otherwise. Permitted values: * ROUND_ROBIN * LEAST_CONNECTION * LEAST_TRAFFIC * LEAST_RESPONSE_TIME * CHAINED_FAILOVER * SOURCE_IP_HASH * SOURCE_MAC_HASH\n",
- "type":"string",
- "enum":[
- "ROUND_ROBIN",
- "LEAST_CONNECTION",
- "LEAST_TRAFFIC",
- "LEAST_RESPONSE_TIME",
- "CHAINED_FAILOVER",
- "SOURCE_IP_HASH",
- "SOURCE_MAC_HASH"
- ]
- },
- "algorithmWeights":{
- "description":"Percentage of messages sent to a CP instance. May be included if applicable to the algorithm. If applicable to the algorithm but not provided, default values determined by the VIM or NFVI are expected to be used. Weight applies to the CP instances in the order they have been created.\n",
- "type":"array",
- "items":{
- "type":"integer"
- }
- }
- }
- }
- }
- }
- },
- "nfpRule":{
- "description":"The NfpRule data type is an expression of the conditions that shall be met in order for the NFP to be applicable to the packet. The condition acts as a flow classifier and it is met only if all the values expressed in the condition are matched by those in the packet. It shall comply with the provisions defined in Table 6.5.3.40-1.\n",
- "type":"object",
- "properties":{
- "etherDestinationAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "etherSourceAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "etherType":{
- "description":"Human readable description for the VNFFG.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "vlanTag":{
- "description":"Indicates a VLAN identifier in an IEEE 802.1Q-2018 tag [6] Multiple tags can be included for QinQ stacking. See note.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- },
- "protocol":{
- "description":"Indicates the L4 protocol, For IPv4 [7] this corresponds to the field called \"Protocol\" to identify the next level protocol. For IPv6 [28] this corresponds to the field is called the \"Next Header\" field. Permitted values: Any keyword defined in the IANA protocol registry [1], e.g.: TCP UDP ICMP\n",
- "type":"string",
- "enum":[
- "TCP",
- "UDP",
- "ICMP"
- ]
- },
- "dscp":{
- "description":"For IPv4 [7] a string of \"0\" and \"1\" digits that corresponds to the 6-bit Differentiated Services Code Point (DSCP) field of the IP header. For IPv6 [28] a string of \"0\" and \"1\" digits that corresponds to the 6 differentiated services bits of the traffic class header field\n",
- "type":"string"
- },
- "sourcePortRange":{
- "description":"The PortRange data type provides the lower and upper bounds of a range of Internet ports. It shall comply with the provisions defined in Table 6.5.3.42-1.\n",
- "type":"object",
- "required":[
- "lowerPort",
- "upperPort"
- ],
- "properties":{
- "lowerPort":{
- "description":"Identifies the lower bound of the port range. upperPort Integer\n",
- "type":"integer",
- "minimum":0
- },
- "upperPort":{
- "description":"Identifies the upper bound of the port range.\n",
- "type":"integer",
- "minimum":0
- }
- }
- },
- "destinationPortRange":{
- "description":"The PortRange data type provides the lower and upper bounds of a range of Internet ports. It shall comply with the provisions defined in Table 6.5.3.42-1.\n",
- "type":"object",
- "required":[
- "lowerPort",
- "upperPort"
- ],
- "properties":{
- "lowerPort":{
- "description":"Identifies the lower bound of the port range. upperPort Integer\n",
- "type":"integer",
- "minimum":0
- },
- "upperPort":{
- "description":"Identifies the upper bound of the port range.\n",
- "type":"integer",
- "minimum":0
- }
- }
- },
- "sourceIpAddressPrefix":{
- "description":"An IPV4 or IPV6 address range in CIDR format. For IPV4 address range, refer to IETF RFC 4632 [12]. For IPV6 address range, refer to IETF RFC 4291.\n",
- "type":"string"
- },
- "destinationIpAddressPrefix":{
- "description":"An IPV4 or IPV6 address range in CIDR format. For IPV4 address range, refer to IETF RFC 4632 [12]. For IPV6 address range, refer to IETF RFC 4291.\n",
- "type":"string"
- },
- "extendedCriteria":{
- "description":"Indicates values of specific bits in a frame.\n",
- "type":"array",
- "items":{
- "description":"The Mask data type identifies the value to be matched for a sequence of bits at a particular location in a frame. It shall comply with the provisions defined in Table 6.5.3.41-1.\n",
- "type":"object",
- "required":[
- "startingPoint",
- "length",
- "value"
- ],
- "properties":{
- "startingPoint":{
- "description":"Indicates the offset between the last bit of the source mac address and the first bit of the sequence of bits to be matched.\n",
- "type":"integer"
- },
- "length":{
- "description":"Indicates the number of bits to be matched.\n",
- "type":"integer"
- },
- "value":{
- "description":"Provide the sequence of bit values to be matched.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "nfpInfoId":{
- "description":"Identifier(s) of the NFP to be deleted from a given VNFFG.\n",
- "type":"array",
- "items":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- },
- "changeNsFlavourData":{
- "description":"This type specifies an existing NS instance for which the DF needs to be changed. This specifies the new DF, the instantiationLevel of the new DF that may be used and the additional parameters as input for the flavour change. It shall comply with the provisions defined in Table 6.5.3.39-1.\n",
- "type":"object",
- "required":[
- "newNsFlavourId"
- ],
- "properties":{
- "newNsFlavourId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "instantiationLevelId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- },
- "addPnfData":{
- "description":"specifies the PNF to be added into the NS instance. It shall be present only if updateType = \"ADD_PNF\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies an PNF to be added to the NS instance and the PNF Profile to use for this PNF. It shall comply with the provisions defined in Table 6.5.3.14-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfName",
- "pnfdId",
- "pnfProfileId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpData":{
- "description":"Address assigned for the PNF external CP(s).\n",
- "type":"array",
- "items":{
- "description":"This type represents the configuration data on the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.16-1.\n",
- "type":"object",
- "required":[
- "cpProtocolData"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Address assigned for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "modifyPnfData":{
- "description":"Specifies the PNF to be modified in the NS instance. It shall be present only if updateType = \"MODIFY_PNF\".\n",
- "type":"array",
- "items":{
- "description":"This type specifies an PNF to be modified in the NS instance. It shall comply with the provisions defined in Table 6.5.3.15-1.\n",
- "type":"object",
- "required":[
- "pnfId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "cpData":{
- "description":"Address assigned for the PNF external CP(s).\n",
- "type":"array",
- "items":{
- "description":"This type represents the configuration data on the external CP of the PNF. It shall comply with the provisions defined in Table 6.5.3.16-1.\n",
- "type":"object",
- "required":[
- "cpProtocolData"
- ],
- "properties":{
- "cpInstanceId":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "cpProtocolData":{
- "description":"Address assigned for this CP.\n",
- "type":"array",
- "items":{
- "description":"This type represents network protocol data.\n",
- "type":"object",
- "required":[
- "layerProtocol"
- ],
- "properties":{
- "layerProtocol":{
- "description":"Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
- "type":"string",
- "enum":[
- "IP_OVER_ETHERNET"
- ]
- },
- "ipOverEthernet":{
- "description":"This type represents network address data for IP over Ethernet.\n",
- "type":"object",
- "properties":{
- "macAddress":{
- "description":"A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
- "type":"string",
- "format":"MAC"
- },
- "ipAddresses":{
- "description":"List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
- "type":"array",
- "items":{
- "type":"object",
- "required":[
- "type"
- ],
- "properties":{
- "type":{
- "description":"The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
- "type":"string",
- "enum":[
- "IPV4",
- "IPV6"
- ]
- },
- "fixedAddresses":{
- "description":"Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"array",
- "items":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- },
- "numDynamicAddresses":{
- "description":"Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
- "type":"integer"
- },
- "addressRange":{
- "description":"An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
- "type":"object",
- "required":[
- "minAddress",
- "maxAddress"
- ],
- "properties":{
- "minAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- },
- "maxAddress":{
- "description":"An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
- "type":"string",
- "format":"IP"
- }
- }
- },
- "subnetId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "removePnfId":{
- "description":"Identifier of the PNF to be deleted from the NS instance. It shall be present only if updateType = \"REMOVE_PNF\".\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "updateTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- }
- }
- },
- "description":"Parameters for the update NS operation, as defined in clause 6.5.2.12.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}/heal":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"Identifier of the NS instance to be healed.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Heal a NS instance.",
- "description":"The POST method requests to heal an NS instance. This method shall follow the provisions specified in the Tables 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, request and response data structures, and response codes. The steps and conditions that apply as the result of successfully executing this method are specified in clause 6.4.1.2.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"body",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This type represents request parameters for the \"Heal NS\" operation. This operation supports the healing of an NS instance, either by healing the complete NS instance or by healing one of more of the VNF instances that are part of this NS. It shall comply with the provisions defined in Table 6.5.2.13-1. Either the parameter healNsData or the parameter healVnfData, but not both shall be provided.\n",
- "type":"object",
- "properties":{
- "healNsData":{
- "description":"This type represents the information used to heal a NS. It shall comply with the provisions defined in Table 6.5.3.43-1.\n",
- "type":"object",
- "required":[
- "degreeHealing"
- ],
- "properties":{
- "degreeHealing":{
- "description":"Indicates the degree of healing. Possible values include: - HEAL_RESTORE: Complete the healing of the NS restoring the state of the NS before the failure occurred - HEAL_QOS: Complete the healing of the NS based on the newest QoS values - HEAL_RESET: Complete the healing of the NS resetting to the original instantiation state of the NS - PARTIAL_HEALING\n",
- "type":"string",
- "enum":[
- "HEAL_RESTORE",
- "HEAL_QOS",
- "HEAL_RESET",
- "PARTIAL_HEALING"
- ]
- },
- "actionsHealing":{
- "description":"Used to specify dedicated healing actions in a particular order (e.g. as a script). The actionsHealing attribute can be used to provide a specific script whose content and actions might only be possible to be derived during runtime.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- },
- "healScript":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "additionalParamsforNs":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "healVnfData":{
- "description":"Provides the information needed to heal a VNF. See note.\n",
- "type":"array",
- "items":{
- "description":"This type represents the information to heal a VNF that is part of an NS. The NFVO shall then invoke the HealVNF operation towards the appropriate VNFM. It shall comply with the provisions defined in Table 6.5.3.44-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "cause":{
- "description":"Indicates the reason why a healing procedure is required.\n",
- "type":"string"
- },
- "additionalParams":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- }
- }
- },
- "description":"Parameters for the heal NS operation, as defined in clause 6.5.2.13.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_instances/{nsInstanceId}/terminate":{
- "parameters":[
- {
- "name":"nsInstanceId",
- "description":"The identifier of the NS instance to be terminated.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Terminate a NS instance.",
- "description":"Terminate NS task. The POST method terminates an NS instance. This method shall follow the provisions specified in the Tables 6.4.8.3.1-1 and 6.4.8.3.1-2 for URI query parameters, request and response data structures, and response codes. The steps and conditions that apply as the result of successfully executing this method are specified in clause 6.4.1.2. In addition, once the NFVO has successfully completed the underlying NS LCM operation occurrence, it shall set the \"nsState\" attribute in the representation of the \"Individual NS instance\" resource to the value \"NOT_INSTANTIATED\". This method can only be used with an NS instance in the INSTANTIATED state. Terminating an NS instance does not delete the NS instance identifier, but rather transitions the NS into the NOT_INSTANTIATED state.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"TerminateNsRequest",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This type represents a NS termination request. It shall comply with the provisions defined in Table 6.5.2.15-1.\n",
- "type":"object",
- "properties":{
- "terminationTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- }
- }
- },
- "description":"The terminate NS request parameters, as defined in clause 6.5.2.15.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_lcm_op_occs":{
- "get":{
- "summary":"Query multiple NS LCM operation occurrences.",
- "description":"Get Operation Status. Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is due to the fact that the NS instance resource is in NOT_INSTANTIATED state, or that another lifecycle management operation is ongoing. The response body shall contain a ProblemDetails structure, in which the \"detail\" attribute shall convey more information about the error\n",
- "parameters":[
- {
- "name":"filter",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV SOL 013[16]. The NFVO shall support receiving this parameter as part of the URI query string. The OSS/BSS may supply this parameter. All attribute names that appear in the NsLcmOpOcc and in data types referenced from it shall be supported by the NFVO in the filter expression.\n"
- },
- {
- "name":"fields",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Complex attributes to be included into the response. See clause 5.3 of ETSI GS NFV SOL 013 for details. The NFVO should support this parameter.\n"
- },
- {
- "name":"exclude_fields",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Complex attributes to be excluded from the response. See clause 5.3 of ETSI GS NFV SOL 013 for details. The NFVO should support this parameter.\n"
- },
- {
- "name":"exclude_default",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV SOL 013 for details. The NFVO shall support this parameter. The following attributes shall be excluded from the NsLcmOpOcc structure in the response body if this parameter is provided: - operationParams - changedVnfInfo - error - resourceChanges\n"
- },
- {
- "name":"nextpage_opaque_marker",
- "in":"query",
- "description":"Marker to obtain the next page of a paged response. Shall be supported by the NFVO if the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV SOL 013 for this resource.\n",
- "required":false,
- "type":"string"
- },
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when status information for zero or more NS lifecycle management operation occurrences has been queried successfully. The response body shall contain in an array the status information about zero or more NS lifecycle operation occurrences, as defined in clause 6.5.2.3. If the \"filter\" URI parameter or one of the \"all_fields\", \"fields\", \"exclude_fields\" or \"exclude_default\" URI parameters was supplied in the request and is supported, the data in the response body shall have been transformed according to the rules specified in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013 [16], respectively. If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 [16].\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Link":{
- "description":"Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- }
- },
- "schema":{
- "type":"array",
- "items":{
- "properties":{
- "NsLcmOpOcc":{
- "description":"This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
- "type":"object",
- "required":[
- "id",
- "operationState",
- "statusEnteredTime",
- "nsInstanceId",
- "lcmOperationType",
- "startTime",
- "isAutomaticInvocation",
- "isCancelPending",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "operationState":{
- "description":"The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- },
- "statusEnteredTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "lcmOperationType":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- },
- "startTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "isAutomaticInvocation":{
- "description":"Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
- "type":"boolean"
- },
- "operationParams":{
- "description":"Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n",
- "type":"object"
- },
- "isCancelPending":{
- "description":"If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
- "type":"boolean"
- },
- "cancelMode":{
- "description":"Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
- "type":"string",
- "enum":[
- "GRACEFUL",
- "FORCEFUL"
- ]
- },
- "error":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- },
- "resourceChanges":{
- "description":"This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
- "type":"object",
- "properties":{
- "affectedVnfs":{
- "description":"Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFs. It shall comply with the provisions in Table 6.5.3.2-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfdId",
- "vnfProfileId",
- "vnfName",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfName":{
- "description":"Name of the VNF Instance.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "TERMINATE",
- "SCALE",
- "CHANGE_FLAVOUR",
- "HEAL",
- "OPERATE",
- "MODIFY_INFORMATION",
- "CHANGE_EXTERNAL_VNF_CONNECTIVITY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- },
- "changedInfo":{
- "description":"Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "changedVnfInfo":{
- "description":"This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
- "type":"object",
- "required":[
- "vnfInstanceId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "changedExtConnectivity":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "affectedPnfs":{
- "description":"Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfProfileId",
- "cpInstanceId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "cpInstanceId":{
- "description":"Identifier of the CP in the scope of the PNF.\n",
- "type":"array",
- "items":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedVls":{
- "description":"Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted, modified and temporary VLs.\n",
- "type":"object",
- "required":[
- "id",
- "virtualLinkDescId",
- "changeType",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n",
- "type":"string",
- "enum":[
- "ADDED",
- "REMOVED",
- "MODIFIED",
- "TEMPORARY",
- "LINK_PORT_ADDED",
- "LINK_PORT_REMOVED"
- ]
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "affectedVnffgs":{
- "description":"Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n",
- "type":"object",
- "required":[
- "vnffgInstanceId",
- "vnffgdId"
- ],
- "properties":{
- "vnffgInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "DELETE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedNss":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n",
- "type":"object",
- "required":[
- "nsInstanceId",
- "nsdId",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "HEAL",
- "TERMINATE"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED",
- "PARTIALLY_COMPLETED"
- ]
- }
- }
- }
- },
- "affectedSaps":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n",
- "type":"object",
- "required":[
- "sapInstanceId",
- "sapdId"
- ],
- "properties":{
- "sapInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- }
- }
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self",
- "nsInstance"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nsInstance":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "cancel":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "retry":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "rollback":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "continue":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "fail":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_lcm_op_occs/{nsLcmOpOccId}":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "get":{
- "summary":"Read an individual NS LCM operation occurrence resource.",
- "description":"The API consumer can use this method to retrieve status information about a NS lifecycle management operation occurrence by reading an individual \"NS LCM operation occurrence\" resource. This method shall follow the provisions specified in the Tables 6.4.10.3.2-1 and 6.4.10.3.2-2 for URI query parameters, request and response data structures, and response codes.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when information about an NS LCM operation occurrence has been read successfully. The response body shall contain status information about an NS lifecycle management operation occurrence (see clause 6.5.2.3).\n",
- "schema":{
- "description":"This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
- "type":"object",
- "required":[
- "id",
- "operationState",
- "statusEnteredTime",
- "nsInstanceId",
- "lcmOperationType",
- "startTime",
- "isAutomaticInvocation",
- "isCancelPending",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "operationState":{
- "description":"The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- },
- "statusEnteredTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "lcmOperationType":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- },
- "startTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "isAutomaticInvocation":{
- "description":"Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
- "type":"boolean"
- },
- "operationParams":{
- "description":"Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n",
- "type":"object"
- },
- "isCancelPending":{
- "description":"If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
- "type":"boolean"
- },
- "cancelMode":{
- "description":"Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
- "type":"string",
- "enum":[
- "GRACEFUL",
- "FORCEFUL"
- ]
- },
- "error":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- },
- "resourceChanges":{
- "description":"This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
- "type":"object",
- "properties":{
- "affectedVnfs":{
- "description":"Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFs. It shall comply with the provisions in Table 6.5.3.2-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfdId",
- "vnfProfileId",
- "vnfName",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfName":{
- "description":"Name of the VNF Instance.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "TERMINATE",
- "SCALE",
- "CHANGE_FLAVOUR",
- "HEAL",
- "OPERATE",
- "MODIFY_INFORMATION",
- "CHANGE_EXTERNAL_VNF_CONNECTIVITY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- },
- "changedInfo":{
- "description":"Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "changedVnfInfo":{
- "description":"This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
- "type":"object",
- "required":[
- "vnfInstanceId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "changedExtConnectivity":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "affectedPnfs":{
- "description":"Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfProfileId",
- "cpInstanceId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "cpInstanceId":{
- "description":"Identifier of the CP in the scope of the PNF.\n",
- "type":"array",
- "items":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedVls":{
- "description":"Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted, modified and temporary VLs.\n",
- "type":"object",
- "required":[
- "id",
- "virtualLinkDescId",
- "changeType",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n",
- "type":"string",
- "enum":[
- "ADDED",
- "REMOVED",
- "MODIFIED",
- "TEMPORARY",
- "LINK_PORT_ADDED",
- "LINK_PORT_REMOVED"
- ]
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "affectedVnffgs":{
- "description":"Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n",
- "type":"object",
- "required":[
- "vnffgInstanceId",
- "vnffgdId"
- ],
- "properties":{
- "vnffgInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "DELETE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedNss":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n",
- "type":"object",
- "required":[
- "nsInstanceId",
- "nsdId",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "HEAL",
- "TERMINATE"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED",
- "PARTIALLY_COMPLETED"
- ]
- }
- }
- }
- },
- "affectedSaps":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n",
- "type":"object",
- "required":[
- "sapInstanceId",
- "sapdId"
- ],
- "properties":{
- "sapInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- }
- }
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self",
- "nsInstance"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nsInstance":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "cancel":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "retry":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "rollback":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "continue":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "fail":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "416":{
- "description":"416 RANGE NOT SATISFIABLE\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_lcm_op_occs/{nsLcmOpOccId}/retry":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence to be retried.\nThis identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request triggering a NS LCM operation. It can also be retrieved from the \"nsLcmOpOccId\" attribute in the NsLcmOperationOccurrenceNotification.\n",
- "in":"path",
- "type":"string",
- "required":true
- }
- ],
- "post":{
- "summary":"Retry a NS lifecycle management operation occurrence.",
- "description":"The POST method initiates retrying a NS lifecycle management operation if that operation has experienced a temporary failure, i.e. the related \"NS LCM operation occurrence\" is in \"FAILED_TEMP\" state. This method shall follow the provisions specified in the Tables 6.4.11.3.1-1 and 6.4.11.3.1-2 for URI query parameters, request and response data structures, and response codes.\n",
- "parameters":[
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_lcm_op_occs/{nsLcmOpOccId}/rollback":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence to be rolled back.\nThis identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request triggering a NS LCM operation. It can also be retrieved from the \"nsLcmOpOccId\" attribute in the NsLcmOperationOccurrenceNotification.\n",
- "in":"path",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Rollback a NS lifecycle management operation occurrence.",
- "description":"The POST method initiates rolling back a NS lifecycle operation if that operation has experienced a temporary failure, i.e. the related \"NS LCM operation occurrence\" is in \"FAILED_TEMP\" state. This method shall follow the provisions specified in the Tables 6.4.12.3.1-1 and 6.4.12.3.1-2 for URI query parameters, request and response data structures, and response codes.\n",
- "parameters":[
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/ns_lcm_op_occs/{nsLcmOpOccId}/continue":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence to be continued.\nThis identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request triggering an NS LCM operation. It can also be retrieved from the \"nsLcmOpOccId\" attribute in the NsLcmOperationOccurrenceNotification.\n",
- "in":"path",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Continue a NS lifecycle management operation occurrence.",
- "description":"The POST method initiates continuing an NS lifecycle operation if that operation has experienced a temporary failure, i.e. the related \"NS LCM operation occurrence\" is in \"FAILED_TEMP\" state. This method shall follow the provisions specified in the Tables 6.4.13.3.1-1 and 6.4.13.3.1-2 for URI query parameters, request and response data structures, and response codes.\n",
- "parameters":[
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}/fail":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence to be marked as \"failed\".\nThis identifier can be retrieved from the resource referenced by he \"Location\" HTTP header in the response to a POST request triggering a NS LCM operation. It can also be retrieved from the \"nsLcmOpOccId\" attribute in the NsLcmOperationOccurrenceNotification.\n",
- "in":"path",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Mark a NS lifecycle management operation occurrence as failed.",
- "description":"The POST method marks a NS lifecycle management operation occurrence as \"finally failed\" if that operation occurrence is in \"FAILED_TEMP\" state.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when the state of the NS lifecycle management operation occurrence has been changed successfully. The response shall include a representation of the \"Individual NS lifecycle management operation occurrence\" resource.\n",
- "schema":{
- "description":"This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\n",
- "type":"object",
- "required":[
- "id",
- "operationState",
- "statusEnteredTime",
- "nsInstanceId",
- "lcmOperationType",
- "startTime",
- "isAutomaticInvocation",
- "isCancelPending",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "operationState":{
- "description":"The enumeration NsLcmOperationStateType shall comply with the provisions defined in Table 6.5.4.4-1. Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- },
- "statusEnteredTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "lcmOperationType":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- },
- "startTime":{
- "description":"Date-time stamp. Representation: String formatted according toas defined by the date-time production in IETF RFC 3339.\n",
- "format":"date-time",
- "type":"string"
- },
- "isAutomaticInvocation":{
- "description":"Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n",
- "type":"boolean"
- },
- "operationParams":{
- "description":"Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest This attribute shall be present if this data type is returned in a response to reading an individual resource, and may be present according to the chosen attribute selector parameter if this data type is returned in a response to a query of a container resource.\n",
- "type":"object"
- },
- "isCancelPending":{
- "description":"If the LCM operation occurrence is in \"PROCESSING\" or \"ROLLING_BACK\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false.\n",
- "type":"boolean"
- },
- "cancelMode":{
- "description":"Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
- "type":"string",
- "enum":[
- "GRACEFUL",
- "FORCEFUL"
- ]
- },
- "error":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- },
- "resourceChanges":{
- "description":"This attribute contains information about the cumulative changes to virtualised resources that were performed so far by the LCM operation since its start, if applicable\n",
- "type":"object",
- "properties":{
- "affectedVnfs":{
- "description":"Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFs. It shall comply with the provisions in Table 6.5.3.2-1.\n",
- "type":"object",
- "required":[
- "vnfInstanceId",
- "vnfdId",
- "vnfProfileId",
- "vnfName",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnfName":{
- "description":"Name of the VNF Instance.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change Permitted values: - ADD - REMOVE - INSTANTIATE - TERMINATE - SCALE - CHANGE_FLAVOUR - HEAL - OPERATE - MODIFY_INFORMATION - CHANGE_EXTERNAL_VNF_CONNECTIVITY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "TERMINATE",
- "SCALE",
- "CHANGE_FLAVOUR",
- "HEAL",
- "OPERATE",
- "MODIFY_INFORMATION",
- "CHANGE_EXTERNAL_VNF_CONNECTIVITY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- },
- "changedInfo":{
- "description":"Information about the changed VNF instance information, including VNF configurable properties,if applicable. When the \"changedInfo\" attribute is present, either the \"changedVnfInfo\" attribute or the \"changedExtConnectivity\" attribute or both shall be present.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "changedVnfInfo":{
- "description":"This type represents the information that is requested to be modified for a VNF instance. The information to be modified shall comply with the associated NSD. EXAMPLE. The vnfPkgId attribute value for a particular VNF instance can only be updated with a value that matches the identifier value of a VNF package whose vnfdId is present in the associated profile of the NSD.\n",
- "type":"object",
- "required":[
- "vnfInstanceId"
- ],
- "properties":{
- "vnfInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfInstanceName":{
- "description":"New value of the \"vnfInstanceName\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfInstanceDescription":{
- "description":"New value of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", or \"null\" to remove the attribute.\n",
- "type":"string"
- },
- "vnfdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "vnfConfigurableProperties":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- },
- "extensions":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- },
- "changedExtConnectivity":{
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "extLinkPorts":{
- "description":"Link ports of this VL.\n",
- "type":"array",
- "items":{
- "description":"This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\n",
- "type":"object",
- "required":[
- "id",
- "resourceHandle"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceHandle":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "cpInstanceId":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "affectedPnfs":{
- "description":"Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified PNFs. It shall comply with the provisions in Table 6.5.3.3-1.\n",
- "type":"object",
- "required":[
- "pnfId",
- "pnfdId",
- "pnfProfileId",
- "cpInstanceId"
- ],
- "properties":{
- "pnfId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "pnfdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfProfileId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "pnfName":{
- "description":"Name of the PNF.\n",
- "type":"string"
- },
- "cpInstanceId":{
- "description":"Identifier of the CP in the scope of the PNF.\n",
- "type":"array",
- "items":{
- "description":"An Identifier that is unique within respect to a PNF. Representation: string of variable length.\n",
- "type":"string"
- }
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedVls":{
- "description":"Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted, modified and temporary VLs.\n",
- "type":"object",
- "required":[
- "id",
- "virtualLinkDescId",
- "changeType",
- "networkResource"
- ],
- "properties":{
- "id":{
- "description":"An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
- "type":"string"
- },
- "virtualLinkDescId":{
- "description":"Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists.\n",
- "type":"string",
- "enum":[
- "ADDED",
- "REMOVED",
- "MODIFIED",
- "TEMPORARY",
- "LINK_PORT_ADDED",
- "LINK_PORT_REMOVED"
- ]
- },
- "networkResource":{
- "description":"This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM.\n",
- "type":"object",
- "required":[
- "resourceId"
- ],
- "properties":{
- "vimId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceProviderId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "resourceId":{
- "description":"An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance. Representation: string of variable length.\n",
- "type":"string"
- },
- "vimLevelResourceType":{
- "description":"Type of the resource in the scope of the VIM or the resource provider. The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or the resource provider and can be used as information that complements the ResourceHandle.\n",
- "type":"string"
- }
- }
- },
- "metadata":{
- "description":"This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 7159.\n",
- "type":"object"
- }
- }
- }
- },
- "affectedVnffgs":{
- "description":"Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified VNFFG instances. It shall comply with the provisions in Table 6.5.3.5-1.\n",
- "type":"object",
- "required":[
- "vnffgInstanceId",
- "vnffgdId"
- ],
- "properties":{
- "vnffgInstanceId":{
- "description":"An identifier that is unique with respect to a NS. Representation: string of variable length.\n",
- "type":"string"
- },
- "vnffgdId":{
- "description":"An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of change. Permitted values: - ADD - DELETE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "DELETE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- },
- "affectedNss":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified nested NSs. It shall comply with the provisions in Table 6.5.3.6-1.\n",
- "type":"object",
- "required":[
- "nsInstanceId",
- "nsdId",
- "changeType",
- "changeResult"
- ],
- "properties":{
- "nsInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "nsdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - INSTANTIATE - SCALE - UPDATE - HEAL - TERMINATE\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "HEAL",
- "TERMINATE"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED - PARTIALLY_COMPLETED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED",
- "PARTIALLY_COMPLETED"
- ]
- }
- }
- }
- },
- "affectedSaps":{
- "description":"Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n",
- "type":"array",
- "items":{
- "description":"This type provides information about added, deleted and modified SAP of a NS. It shall comply with the provisions in Table 6.5.3.7-1.\n",
- "type":"object",
- "required":[
- "sapInstanceId",
- "sapdId"
- ],
- "properties":{
- "sapInstanceId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapdId":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "sapName":{
- "description":"Human readable name for the SAP.\n",
- "type":"string"
- },
- "changeType":{
- "description":"Signals the type of lifecycle change. Permitted values: - ADD - REMOVE - MODIFY\n",
- "type":"string",
- "enum":[
- "ADD",
- "REMOVE",
- "MODIFY"
- ]
- },
- "changeResult":{
- "description":"Signals the result of change identified by the \"changeType\" attribute. Permitted values: - COMPLETED - ROLLED_BACK - FAILED\n",
- "type":"string",
- "enum":[
- "COMPLETED",
- "ROLLED_BACK",
- "FAILED"
- ]
- }
- }
- }
- }
- }
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self",
- "nsInstance"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "nsInstance":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "cancel":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "retry":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "rollback":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "continue":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- },
- "fail":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}/cancel":{
- "parameters":[
- {
- "name":"nsLcmOpOccId",
- "description":"Identifier of a NS lifecycle management operation occurrence to be canceled.\nThis identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request triggering a NS LCM operation. It can also be retrieved from the \"nsLcmOpOccId\" attribute in the NsLcmOperationOccurrenceNotification.\n",
- "in":"path",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Cancel a NS lifecycle management operation occurrence.",
- "description":"The POST method initiates cancelling an ongoing NS lifecycle management operation while it is being executed or rolled back, i.e. the related \"NS LCM operation occurrence\" is either in \"PROCESSING\" or \"ROLLING_BACK\" state. This method shall follow the provisions specified in the Tables 6.4.15.3.1-1 and 6.4.15.3.1-2 for URI query parameters, request and response data structures, and response codes. Before returning the \"202 Accepted\" response, the NFVO shall update the \"isCancelPending\" and \"cancelMode\" attributes in the representation of the parent resource according to the provisions in clause 6.5.2.3. In case of success of processing the asynchronous request: 1) If the request has been processed in \"PROCESSING\" or \"ROLLING_BACK\" state, the \"operationState\" attribute in the representation of the parent resource shall be changed to \"FAILED_TEMP\". In both cases, the NFVO shall update the \"isCancelPending\" and \"cancelMode\" attributes in the representation of the parent resource according to the provisions in clause 6.5.2.3 to reflect the new status, and the applicable \"result\" notification according to clause 6.6.2.2 shall be emitted to indicate that the execution of the underlying NS LCM operation occurrence has temporarily failed. Due to race conditions, the processing of the actual operation that is to be cancelled may eventually still succeed, in which case the \"operationState\" attribute in the representation of the parent resource shall represent the result of that operation, rather than the result of the cancellation.\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"body",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This type represents a parameter to select the mode of canceling an ongoing NS LCM operation occurrence. It shall comply with the provisions defined in Table 6.5.2.16-1.\n",
- "type":"object",
- "required":[
- "cancelMode"
- ],
- "properties":{
- "cancelMode":{
- "description":"Cancellation mode.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, and shall wait for the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, to finish execution or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\nThe NFVO shall not start any new VNF lifecycle management and resource management operation, shall cancel the ongoing VNF lifecycle management and resource management operations in the underlying system, typically the VNFM and VIM, and shall wait for the cancellation to finish or to time out. After that, the NFVO shall put the operation occurrence into the FAILED_TEMP state.\n",
- "type":"string",
- "enum":[
- "GRACEFUL",
- "FORCEFUL"
- ]
- }
- }
- },
- "description":"The POST request to this resource shall include a CancelMode structure in the payload body to choose between \"graceful\" and \"forceful\" cancellation.\n"
- }
- ],
- "responses":{
- "202":{
- "description":"202 ACCEPTED\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Location":{
- "description":"The resource URI of the created NS instance",
- "type":"string",
- "format":"url",
- "maximum":1,
- "minimum":0
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "409":{
- "description":"409 CONFLICT\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions":{
- "parameters":[
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235.\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "post":{
- "summary":"Subscribe to NS lifecycle change notifications.",
- "description":"The POST method creates a new subscription. This method shall support the URI query parameters, request and response data structures, and response codes, as specified in the Tables 6.4.16.3.1-1 and 6.4.16.3.1-2. Creation of two subscription resources with the same callbackURI and the same filter can result in performance degradation and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases. Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the same filter and callbackUri already exists (in which case it shall return the \"201 Created\" response code), or may decide to not create a duplicate subscription resource (in which case it shall return a \"303 See Other\" response code referencing the existing subscription resource with the same filter and callbackUri).\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"Content-Type",
- "description":"The MIME type of the body of the request. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- },
- {
- "name":"body",
- "in":"body",
- "required":true,
- "schema":{
- "description":"This type represents a subscription request related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.2-1..\n",
- "type":"object",
- "required":[
- "callbackUri"
- ],
- "properties":{
- "filter":{
- "description":"This type represents a subscription filter related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type":"object",
- "properties":{
- "nsInstanceSubscriptionFilter":{
- "description":"This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type":"object",
- "properties":{
- "nsdIds":{
- "description":"If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfdIds":{
- "description":"If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdIds":{
- "description":"If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceIds":{
- "description":"If present, match NS instances with an instance identifier listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceNames":{
- "description":"If present, match NS instances with a NS Instance Name listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- }
- }
- },
- "notificationTypes":{
- "description":"Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n",
- "type":"array",
- "items":{
- "type":"string",
- "enum":[
- "NsLcmOperationOccurenceNotification",
- "NsIdentifierCreationNotification",
- "NsIdentifierDeletionNotification",
- "NsChangeNotification"
- ]
- }
- },
- "operationTypes":{
- "description":"Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- }
- },
- "operationStates":{
- "description":"Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- }
- },
- "nsComponentTypes":{
- "description":"Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n",
- "type":"string",
- "enum":[
- "VNF",
- "PNF",
- "NS"
- ]
- }
- },
- "lcmOpNameImpactingNsComponent":{
- "description":"Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "VNF_INSTANTIATE",
- "VNF_SCALE",
- "VNF_SCALE_TO_LEVEL",
- "VNF_CHANGE_FLAVOUR",
- "VNF_TERMINATE",
- "VNF_HEAL",
- "VNF_OPERATE",
- "VNF_CHANGE_EXT_CONN",
- "VNF_MODIFY_INFO",
- "NS_INSTANTIATE",
- "NS_SCALE",
- "NS_UPDATE",
- "NS_TERMINATE",
- "NS_HEAL"
- ]
- }
- },
- "lcmOpOccStatusImpactingNsComponent":{
- "description":"Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n",
- "type":"string",
- "enum":[
- "START",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED",
- "ROLLED_BACK"
- ]
- }
- }
- }
- },
- "callbackUri":{
- "description":"String formatted according to IETF RFC 3986.\n",
- "type":"string",
- "format":"uri"
- },
- "authentication":{
- "type":"object",
- "required":[
- "authType"
- ],
- "properties":{
- "authType":{
- "description":"Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: - BASIC: In every HTTP request to the notification endpoint, use HTTP Basic authentication with the client credentials.\n- OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the notification endpoint, use an OAuth 2.0 Bearer token, obtained\n using the client credentials grant type.\n- TLS_CERT: Every HTTP request to the notification endpoint is sent over a mutually authenticated TLS session, i.e. not only the\n server is authenticated, but also the client is authenticated\n during the TLS tunnel setup.\n",
- "type":"array",
- "items":{
- "type":"string",
- "enum":[
- "BASIC",
- "OAUTH2_CLIENT_CREDENTIALS",
- "TLS_CERT"
- ]
- }
- },
- "paramsBasic":{
- "description":"Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type":"object",
- "properties":{
- "userName":{
- "description":"Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type":"string"
- },
- "password":{
- "description":"Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
- "type":"string"
- }
- }
- },
- "paramsOauth2ClientCredentials":{
- "description":"Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
- "type":"object",
- "properties":{
- "clientId":{
- "description":"Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type":"string"
- },
- "clientPassword":{
- "description":"Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
- "type":"string"
- },
- "tokenEndpoint":{
- "description":"String formatted according to IETF RFC 3986.\n",
- "type":"string",
- "format":"uri"
- }
- }
- }
- }
- }
- }
- },
- "description":"Details of the subscription to be created, as defined in clause 6.5.2.2.\n"
- }
- ],
- "responses":{
- "201":{
- "description":"201 Created\nShall be returned when the subscription has been created successfully. The response body shall contain a representation of the created \"Individual subscription\" resource. The HTTP response shall include a \"Location:\" HTTP header that points to the created \"Individual subscription\" resource.\n",
- "schema":{
- "description":"This type represents a subscription related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.4-1.\n",
- "type":"object",
- "required":[
- "id",
- "callbackUri",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "filter":{
- "description":"This type represents a subscription filter related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type":"object",
- "properties":{
- "nsInstanceSubscriptionFilter":{
- "description":"This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type":"object",
- "properties":{
- "nsdIds":{
- "description":"If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfdIds":{
- "description":"If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdIds":{
- "description":"If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceIds":{
- "description":"If present, match NS instances with an instance identifier listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceNames":{
- "description":"If present, match NS instances with a NS Instance Name listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- }
- }
- },
- "notificationTypes":{
- "description":"Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n",
- "type":"array",
- "items":{
- "type":"string",
- "enum":[
- "NsLcmOperationOccurenceNotification",
- "NsIdentifierCreationNotification",
- "NsIdentifierDeletionNotification",
- "NsChangeNotification"
- ]
- }
- },
- "operationTypes":{
- "description":"Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- }
- },
- "operationStates":{
- "description":"Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- }
- },
- "nsComponentTypes":{
- "description":"Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n",
- "type":"string",
- "enum":[
- "VNF",
- "PNF",
- "NS"
- ]
- }
- },
- "lcmOpNameImpactingNsComponent":{
- "description":"Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "VNF_INSTANTIATE",
- "VNF_SCALE",
- "VNF_SCALE_TO_LEVEL",
- "VNF_CHANGE_FLAVOUR",
- "VNF_TERMINATE",
- "VNF_HEAL",
- "VNF_OPERATE",
- "VNF_CHANGE_EXT_CONN",
- "VNF_MODIFY_INFO",
- "NS_INSTANTIATE",
- "NS_SCALE",
- "NS_UPDATE",
- "NS_TERMINATE",
- "NS_HEAL"
- ]
- }
- },
- "lcmOpOccStatusImpactingNsComponent":{
- "description":"Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n",
- "type":"string",
- "enum":[
- "START",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED",
- "ROLLED_BACK"
- ]
- }
- }
- }
- },
- "callbackUri":{
- "description":"String formatted according to IETF RFC 3986.\n",
- "type":"string",
- "format":"uri"
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n"
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "303":{
- "description":"303 SEE OTHER\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "422":{
- "description":"422 UNPROCESSABLE ENTITY\nIf the payload body of a request contains syntactically correct data (e.g. well-formed JSON) but the data cannot be processed (e.g. because it fails validation against a schema), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nThis error response code is only applicable for methods that have a request body.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- },
- "get":{
- "summary":"Query multiple subscriptions.",
- "description":"Query Subscription Information.\nThe GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for resynchronization after error situations.\n",
- "parameters":[
- {
- "name":"filter",
- "in":"query",
- "required":false,
- "type":"string",
- "description":"Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV SOL 013. The NFVO shall support receiving this parameter as part of the URI query string. The OSS/BSS may supply this parameter. All attribute names that appear in the LccnSubscription and in data types referenced from it shall be supported by the NFVO in the filter expression.\n"
- },
- {
- "name":"nextpage_opaque_marker",
- "in":"query",
- "description":"Marker to obtain the next page of a paged response. Shall be supported by the NFVO if the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV SOL 013 for this resource.\n",
- "required":false,
- "type":"string"
- },
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when the list of subscriptions has been queried successfully. The response body shall contain in an array the representations of all active subscriptions of the functional block that invokes the method, i.e. zero or more representations of lifecycle change notification subscriptions as defined in clause 6.5.2.4. If the \"filter\" URI parameter was supplied in the request, the data in the response body shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013 [16]. If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 [16].\n",
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n"
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "Link":{
- "description":"Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- }
- },
- "schema":{
- "type":"array",
- "items":{
- "description":"This type represents a subscription related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.4-1.\n",
- "type":"object",
- "required":[
- "id",
- "callbackUri",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "filter":{
- "description":"This type represents a subscription filter related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type":"object",
- "properties":{
- "nsInstanceSubscriptionFilter":{
- "description":"This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type":"object",
- "properties":{
- "nsdIds":{
- "description":"If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfdIds":{
- "description":"If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdIds":{
- "description":"If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceIds":{
- "description":"If present, match NS instances with an instance identifier listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceNames":{
- "description":"If present, match NS instances with a NS Instance Name listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- }
- }
- },
- "notificationTypes":{
- "description":"Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n",
- "type":"array",
- "items":{
- "type":"string",
- "enum":[
- "NsLcmOperationOccurenceNotification",
- "NsIdentifierCreationNotification",
- "NsIdentifierDeletionNotification",
- "NsChangeNotification"
- ]
- }
- },
- "operationTypes":{
- "description":"Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- }
- },
- "operationStates":{
- "description":"Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- }
- },
- "nsComponentTypes":{
- "description":"Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n",
- "type":"string",
- "enum":[
- "VNF",
- "PNF",
- "NS"
- ]
- }
- },
- "lcmOpNameImpactingNsComponent":{
- "description":"Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "VNF_INSTANTIATE",
- "VNF_SCALE",
- "VNF_SCALE_TO_LEVEL",
- "VNF_CHANGE_FLAVOUR",
- "VNF_TERMINATE",
- "VNF_HEAL",
- "VNF_OPERATE",
- "VNF_CHANGE_EXT_CONN",
- "VNF_MODIFY_INFO",
- "NS_INSTANTIATE",
- "NS_SCALE",
- "NS_UPDATE",
- "NS_TERMINATE",
- "NS_HEAL"
- ]
- }
- },
- "lcmOpOccStatusImpactingNsComponent":{
- "description":"Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n",
- "type":"string",
- "enum":[
- "START",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED",
- "ROLLED_BACK"
- ]
- }
- }
- }
- },
- "callbackUri":{
- "description":"String formatted according to IETF RFC 3986.\n",
- "type":"string",
- "format":"uri"
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- },
- "/subscriptions/{subscriptionId}":{
- "parameters":[
- {
- "name":"subscriptionId",
- "description":"Identifier of this subscription.\n",
- "in":"path",
- "type":"string",
- "required":true
- },
- {
- "name":"Authorization",
- "description":"The authorization token for the request. Reference: IETF RFC 7235.\n",
- "in":"header",
- "required":false,
- "type":"string"
- },
- {
- "name":"Version",
- "description":"Version of the API requested to use when responding to this request.\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "get":{
- "summary":"Read an individual subscription resource.",
- "description":"The GET method retrieves information about a subscription by reading an individual subscription resource. This method shall support the URI query parameters, request and response data structures, and response codes, as specified in the Tables 6.4.17.3.2-1 and 6.4.17.3.2-2\n",
- "parameters":[
- {
- "name":"Accept",
- "description":"Content-Types that are acceptable for the response. Reference: IETF RFC 7231\n",
- "in":"header",
- "required":true,
- "type":"string"
- }
- ],
- "responses":{
- "200":{
- "description":"200 OK\nShall be returned when information about an individual subscription has been read successfully. The response body shall contain a representation of the \"Individual subscription\" resource.\n",
- "schema":{
- "description":"This type represents a subscription related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.2.4-1.\n",
- "type":"object",
- "required":[
- "id",
- "callbackUri",
- "_links"
- ],
- "properties":{
- "id":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- },
- "filter":{
- "description":"This type represents a subscription filter related to notifications about NS lifecycle changes. It shall comply with the provisions defined in Table 6.5.3.8-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n",
- "type":"object",
- "properties":{
- "nsInstanceSubscriptionFilter":{
- "description":"This type represents subscription filter criteria to match NS instances.\nNOTE 1: The attributes \"nsdIds\", \"vnfdIds\" and \"pnfdIds\" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen.\nNOTE 2: The attributes \"nsInstanceIds\" and \"nsInstanceNames\" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n",
- "type":"object",
- "properties":{
- "nsdIds":{
- "description":"If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "vnfdIds":{
- "description":"If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "pnfdIds":{
- "description":"If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceIds":{
- "description":"If present, match NS instances with an instance identifier listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"An identifier with the intention of being globally unique.\n",
- "type":"string"
- }
- },
- "nsInstanceNames":{
- "description":"If present, match NS instances with a NS Instance Name listed in this attribute.\n",
- "type":"array",
- "items":{
- "description":"A string as defined in IETF RFC 8259.\n",
- "type":"string"
- }
- }
- }
- },
- "notificationTypes":{
- "description":"Match particular notification types. Permitted values: - NsLcmOperationOccurenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification - NsChangeNotification\n",
- "type":"array",
- "items":{
- "type":"string",
- "enum":[
- "NsLcmOperationOccurenceNotification",
- "NsIdentifierCreationNotification",
- "NsIdentifierDeletionNotification",
- "NsChangeNotification"
- ]
- }
- },
- "operationTypes":{
- "description":"Match particular NS lifecycle operation types for the notification of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsLcmOpType represents those lifecycle operations that trigger a NS lifecycle management operation occurrence notification. Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate NS\" LCM operation. SCALE | Represents the \"Scale NS\" LCM operation. UPDATE | Represents the \"Update NS\" LCM operation. TERMINATE | Represents the \"Terminate NS\" LCM operation. HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "INSTANTIATE",
- "SCALE",
- "UPDATE",
- "TERMINATE",
- "HEAL"
- ]
- }
- },
- "operationStates":{
- "description":"Match particular LCM operation state values as reported in notifications of type NsLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"Value | Description ------|------------ PROCESSING | The LCM operation is currently in execution. COMPLETED | The LCM operation has been completed successfully. PARTIALLY_COMPLETED | The LCM operation has been partially completed with accepTable errors. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action will not succeed. OLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the NS prior to the original operation invocation has been restored as closely as possible.\n",
- "type":"string",
- "enum":[
- "PROCESSING",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED_TEMP",
- "FAILED",
- "ROLLING_BACK",
- "ROLLED_BACK"
- ]
- }
- },
- "nsComponentTypes":{
- "description":"Match particular NS component types for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChang.\n",
- "type":"array",
- "items":{
- "description":"The enumeration NsComponentType represents the NS component type. It shall comply with the provisions defined in Table 6.5.4.5-1. Value | Description ------|------------ VNF | Represents the impacted NS component is a VNF. PNF | Represents the impacted NS component is a PNF. NS | Represents the impacted NS component is a nested NS.\n",
- "type":"string",
- "enum":[
- "VNF",
- "PNF",
- "NS"
- ]
- }
- },
- "lcmOpNameImpactingNsComponent":{
- "description":"Match particular LCM operation names for the notification of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the NS component and trigger an NS change notification. It shall comply with the provisions defined in Table 6.5.4.6-1. Value | Description ------|------------ VNF_INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. VNF_SCALE | Represents the \"Scale VNF\" LCM operation. VNF_SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. VNF_CHANGE_FLAVOUR | Represents the \"Change VNF Flavor\" LCM operation. VNF_TERMINATE | Represents the \"Terminate VNF\" LCM operation. VNF_HEAL | Represents the \"Heal VNF\" LCM operation. VNF_OPERATE | Represents the \"Operate VNF\" LCM operation. VNF_CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. VNF_MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. NS_INSTANTIATE | Represents the \"Instantiate NS\" LCM operation NS_SCALE | Represents the \"Scale NS\" LCM operation. NS_UPDATE | Represents the \"Update NS\" LCM operation. NS_TERMINATE | Represents the \"Terminate NS\" LCM operation. NS_HEAL | Represents the \"Heal NS\" LCM operation.\n",
- "type":"string",
- "enum":[
- "VNF_INSTANTIATE",
- "VNF_SCALE",
- "VNF_SCALE_TO_LEVEL",
- "VNF_CHANGE_FLAVOUR",
- "VNF_TERMINATE",
- "VNF_HEAL",
- "VNF_OPERATE",
- "VNF_CHANGE_EXT_CONN",
- "VNF_MODIFY_INFO",
- "NS_INSTANTIATE",
- "NS_SCALE",
- "NS_UPDATE",
- "NS_TERMINATE",
- "NS_HEAL"
- ]
- }
- },
- "lcmOpOccStatusImpactingNsComponent":{
- "description":"Match particular LCM operation status values as reported in notifications of type NsChangeNotification. May be present if the \"notificationTypes\" attribute contains the value \"NsChangeNotification\", and shall be absent otherwise.\n",
- "type":"array",
- "items":{
- "description":"The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the provisions defined in Table 6.5.4.7-1. Value | Description ------|------------ START | The impact on the NS component is identified. COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back.\n",
- "type":"string",
- "enum":[
- "START",
- "COMPLETED",
- "PARTIALLY_COMPLETED",
- "FAILED",
- "ROLLED_BACK"
- ]
- }
- }
- }
- },
- "callbackUri":{
- "description":"String formatted according to IETF RFC 3986.\n",
- "type":"string",
- "format":"uri"
- },
- "_links":{
- "description":"Links to resources related to this resource.\n",
- "type":"object",
- "required":[
- "self"
- ],
- "properties":{
- "self":{
- "description":"This type represents a link to a resource.\n",
- "type":"object",
- "required":[
- "href"
- ],
- "properties":{
- "href":{
- "description":"URI of a resource referenced from a notification. Should be an absolute URI (i.e. a URI that contains {apiRoot}), however, may be a relative URI (i.e. a URI where the {apiRoot} part is omitted) if the {apiRoot} information is not available.\n",
- "type":"string",
- "format":"url"
- }
- }
- }
- }
- }
- }
- },
- "headers":{
- "Content-Type":{
- "type":"string",
- "description":"The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body.\n"
- },
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "404":{
- "description":"404 NOT FOUND\nIf the API producer did not find a current representation for the resource addressed by the URI passed in the request or is not willing to disclose that one exists, it shall respond with this response code. The \"ProblemDetails\" structure may be provided, including in the \"detail\" attribute information about the source of the problem, e.g. a wrong resource URI variable.\nThis response code is not appropriate in case the resource addressed by the URI is a container resource which is designed to contain child resources, but does not contain any child resource at the time the request is received. For a GET request to an existing empty container resource, a typical response contains a 200 OK response code and a payload body with an empty array.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- },
- "delete":{
- "summary":"Terminate a subscription.",
- "description":"The DELETE method terminates an individual subscription. This method shall support the URI query parameters, request and response data structures, and response codes, as specified in the Tables 6.4.17.3.5-1 and 6.4.17.3.5-2. As the result of successfully executing this method, the \"Individual subscription\" resource shall not exist any longer. This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed API consumer for a certain time period after the deletion.\n",
- "responses":{
- "204":{
- "description":"204 NO CONTENT\nShall be returned when the \"Individual subscription\" resource has been deleted successfully. The response body shall be empty.\n",
- "headers":{
- "WWW-Authenticate":{
- "type":"string",
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- }
- },
- "400":{
- "description":"400 BAD REQUEST\n400 code can be returned in the following specified cases, the specific cause has to be proper specified in the \"ProblemDetails\" structure to be returned.\nIf the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect query parameters or the payload body contains a syntactically incorrect data structure), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf the response to a GET request which queries a container resource would be so big that the performance of the API producer is adversely affected, and the API producer does not support paging for the affected resource, it shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and should include in the \"detail\" attribute more information about the source of the problem.\nIf there is an application error related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\nIf the request contains a malformed access token, the API producer should respond with this response. The details of the error shall be returned in the WWW Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\nThe use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "401":{
- "description":"401 UNAUTHORIZED\nIf the request contains no access token even though one is required, or if the request contains an authorization token that is invalid (e.g. expired or revoked), the API producer should respond with this response. The details of the error shall be returned in the WWW-Authenticate HTTP header, as defined in IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be provided.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "403":{
- "description":"403 FORBIDDEN\nIf the API consumer is not allowed to perform a particular request to a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided. It should include in the \"detail\" attribute information about the source of the problem, and may indicate how to solve it.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "405":{
- "description":"405 METHOD NOT ALLOWED\nIf a particular HTTP method is not supported for a particular resource, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "406":{
- "description":"406 NOT ACCEPTABLE\nIf the \"Accept\" header does not contain at least one name of a content type that is acceptable to the API producer, the API producer shall respond with this response code. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "500":{
- "description":"500 INTERNAL SERVER ERROR\nIf there is an application error not related to the client's input that cannot be easily mapped to any other HTTP response code (\"catch all error\"), the API producer shall respond with this response code. The \"ProblemDetails\" structure shall be provided, and shall include in the \"detail\" attribute more information about the source of the problem.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "503":{
- "description":"503 SERVICE UNAVAILABLE\nIf the API producer encounters an internal overload situation of itself or of a system it relies on, it should respond with this response code, following the provisions in IETF RFC 7231 for the use of the \"Retry-After\" HTTP header and for the alternative to refuse the connection. The \"ProblemDetails\" structure may be omitted.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- },
- "504":{
- "description":"504 GATEWAY TIMEOUT\nIf the API producer encounters a timeout while waiting for a response from an upstream server (i.e. a server that the API producer communicates with when fulfilling a request), it should respond with this response code.\n",
- "headers":{
- "Content-Type":{
- "description":"The MIME type of the body of the response.",
- "type":"string",
- "maximum":1,
- "minimum":1
- },
- "WWW-Authenticate":{
- "description":"Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP request has provided an invalid authorization token.\n",
- "type":"string",
- "maximum":1,
- "minimum":0
- },
- "Version":{
- "description":"Version of the API used in the response.\n",
- "type":"string",
- "maximum":1,
- "minimum":1
- }
- },
- "schema":{
- "description":"The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced in this structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
- "type":"object",
- "required":[
- "status",
- "detail"
- ],
- "properties":{
- "type":{
- "description":"A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
- "type":"string",
- "format":"URI"
- },
- "title":{
- "description":"A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
- "type":"string"
- },
- "status":{
- "description":"The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
- "type":"integer"
- },
- "detail":{
- "description":"A human-readable explanation specific to this occurrence of the problem.\n",
- "type":"string"
- },
- "instance":{
- "description":"A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
- "type":"string",
- "format":"URI"
- }
- }
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/pom.xml
deleted file mode 100644
index 66fbc370d1..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/pom.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm-application</artifactId>
- <name>SO ETSI NFVO NS LCM Application</name>
-
-
- <build>
- <finalName>${project.artifactId}-${project.version}</finalName>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <mainClass>org.onap.so.etsi.nfvo.ns.lcm.app.Application</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <id>original</id>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <so.log.level>DEBUG</so.log.level>
- </systemPropertyVariables>
- <rerunFailingTestsCount>2</rerunFailingTestsCount>
- <parallel>suites</parallel>
- <useUnlimitedThreads>false</useUnlimitedThreads>
- <threadCount>1</threadCount>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-service</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/Application.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/Application.java
deleted file mode 100644
index 12f3bfc119..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/Application.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.app;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.ComponentScan.Filter;
-import org.springframework.context.annotation.FilterType;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@ComponentScan(basePackages = {"org.onap"}, nameGenerator = DefaultToShortClassNameBeanNameGenerator.class,
- excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class)})
-public class Application {
- private static final Logger logger = LoggerFactory.getLogger(Application.class);
-
- /**
- * Entry point for the Spring boot application
- *
- * @param args arguments for the application
- */
- public static void main(final String[] args) {
- new SpringApplication(Application.class).run(args);
- logger.info("SO ETSI NFVO NS LCM Application started!");
-
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/AsyncThreadExecutorConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/AsyncThreadExecutorConfiguration.java
deleted file mode 100644
index 4427e1ac2f..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/AsyncThreadExecutorConfiguration.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.app;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.concurrent.Executor;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-@EnableAsync
-public class AsyncThreadExecutorConfiguration {
- private static final Logger logger = getLogger(AsyncThreadExecutorConfiguration.class);
-
- @Value("${mso.async.core-pool-size:20}")
- private int corePoolSize;
-
- @Value("${mso.async.max-pool-size:30}")
- private int maxPoolSize;
-
- @Value("${mso.async.queue-capacity:50}")
- private int queueCapacity;
-
- @Bean
- @Primary
- public Executor asyncExecutor() {
- logger.info("Setting ThreadPoolTaskExecutor for async calls ...");
- final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
- executor.setCorePoolSize(corePoolSize);
- executor.setMaxPoolSize(maxPoolSize);
- executor.setQueueCapacity(queueCapacity);
- executor.setThreadNamePrefix("Async Process-");
- executor.initialize();
- return executor;
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/DefaultToShortClassNameBeanNameGenerator.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/DefaultToShortClassNameBeanNameGenerator.java
deleted file mode 100644
index 2546c9c23f..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/app/DefaultToShortClassNameBeanNameGenerator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.app;
-
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.context.annotation.AnnotationBeanNameGenerator;
-import org.springframework.util.ClassUtils;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class DefaultToShortClassNameBeanNameGenerator extends AnnotationBeanNameGenerator {
-
- @Override
- protected String buildDefaultBeanName(final BeanDefinition definition) {
- return ClassUtils.getShortName(definition.getBeanClassName());
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-aaf.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-aaf.yaml
deleted file mode 100644
index b2efde56c7..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-aaf.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License. \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-basic.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-basic.yaml
deleted file mode 100644
index b2efde56c7..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application-basic.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License. \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application.yaml
deleted file mode 100644
index 7f0fd93c8d..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-application/src/main/resources/application.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-aai:
- auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
- version: v19
- endpoint: https://aai.onap:8443
-camunda:
- bpm:
- admin-user:
- id: admin
- password: admin
- history-level: full
- job-execution:
- max-pool-size: 30
- core-pool-size: 3
-spring:
- security:
- usercredentials:
- - username: so-etsi-nfvo-ns-lcm
- password: $2a$10$Fh9ffgPw2vnmsghsRD3ZauBL1aKXebigbq3BB1RPWtE62UDILsjke
- role: BPEL-Client
- http:
- converters:
- preferred-json-mapper: gson
- main:
- allow-bean-definition-overriding: true
- datasource:
- hikari:
- camunda:
- jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/camundabpmn
- username: ${DB_USERNAME}
- password: ${DB_PASSWORD}
- driver-class-name: org.mariadb.jdbc.Driver
- pool-name: bpmn-pool
- registerMbeans: true
- nfvo:
- jdbcUrl: jdbc:mariadb://${DB_HOST}:${DB_PORT}/nfvo
- username: ${NFVO_USERNAME}
- password: ${NFVO_PASSWORD}
- driver-class-name: org.mariadb.jdbc.Driver
- pool-name: nfvo-pool
- registerMbeans: true
-server:
- port: 9095
- tomcat:
- max-threads: 50
-mso:
- key: 07a7159d3bf51a0e53be7a8f89699be7
-so:
- adapters:
- sol003-adapter:
- url: https://so-vnfm-adapter.onap:9092/so/vnfm-adapter/v1
- auth: Basic dm5mbTpwYXNzd29yZDEk
-etsi-catalog-manager:
- base:
- endpoint: http://modeling-etsicatalog.onap:8806/api
-so-etsi-nfvo-ns-lcm:
- endpoint: http://so-etsi-nfvo-ns-lcm.onap:9095 \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/pom.xml
deleted file mode 100644
index 3178b28502..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/pom.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm-bpmn-flows</artifactId>
- <name>SO ETSI NFVO NS LCM BPMN Flows</name>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <so.log.level>DEBUG</so.log.level>
- </systemPropertyVariables>
- <rerunFailingTestsCount>2</rerunFailingTestsCount>
- <parallel>suites</parallel>
- <useUnlimitedThreads>false</useUnlimitedThreads>
- <threadCount>1</threadCount>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-database-service</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-pkgm-ext-clients</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.adapters</groupId>
- <artifactId>etsi-sol003-lcm-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>aai-client</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.camunda.bpm.springboot</groupId>
- <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
- <version>${camunda.springboot.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.camunda.bpmn</groupId>
- <artifactId>camunda-engine-rest-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.yaml</groupId>
- <artifactId>snakeyaml</artifactId>
- </dependency>
- <dependency>
- <groupId>com.shazam</groupId>
- <artifactId>shazamcrest</artifactId>
- <version>${snakeyaml-version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </exclusion>
- <exclusion>
- <groupId>com.vaadin.external.google</groupId>
- <artifactId>android-json</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <version>${hamcrest-version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>nl.jqno.equalsverifier</groupId>
- <artifactId>equalsverifier</artifactId>
- <version>${equalsverifier-version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaCustomConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaCustomConfiguration.java
deleted file mode 100644
index 33923f400e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaCustomConfiguration.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.NS_WORKFLOW_ENGINE;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.TENANT_ID;
-import static org.slf4j.LoggerFactory.getLogger;
-import org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration;
-import org.camunda.bpm.spring.boot.starter.configuration.Ordering;
-import org.camunda.bpm.spring.boot.starter.configuration.impl.AbstractCamundaConfiguration;
-import org.slf4j.Logger;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-@Order(Ordering.DEFAULT_ORDER + 1)
-public class CamundaCustomConfiguration extends AbstractCamundaConfiguration {
- private static final Logger logger = getLogger(CamundaCustomConfiguration.class);
-
- @Override
- public void preInit(final SpringProcessEngineConfiguration processEngineConfiguration) {
- logger.info("Setting DeploymentTenantId to {} and DeploymentName to {}", TENANT_ID, NS_WORKFLOW_ENGINE);
- processEngineConfiguration.setDeploymentTenantId(TENANT_ID);
- processEngineConfiguration.setDeploymentName(NS_WORKFLOW_ENGINE);
- super.preInit(processEngineConfiguration);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaDatabaseConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaDatabaseConfiguration.java
deleted file mode 100644
index 770e91c1cb..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaDatabaseConfiguration.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-
-import static org.slf4j.LoggerFactory.getLogger;
-import javax.sql.DataSource;
-import org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration;
-import org.camunda.bpm.spring.boot.starter.util.SpringBootProcessEnginePlugin;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
-import org.springframework.jmx.export.MBeanExporter;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-@EnableTransactionManagement
-public class CamundaDatabaseConfiguration {
-
- private static final String CAMUNDA_TRANSACTION_MANAGER_BEAN_NAME = "camundaTransactionManager";
-
- private static final String CAMUNDA_DATA_SOURCE_BEAN_NAME = "camundaBpmDataSource";
-
- private static final Logger logger = getLogger(CamundaDatabaseConfiguration.class);
-
- @Autowired(required = false)
- private MBeanExporter mBeanExporter;
-
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.hikari.camunda")
- public HikariConfig camundaDbConfig() {
- logger.debug("Creating Camunda HikariConfig bean ... ");
- return new HikariConfig();
- }
-
- @Bean(name = CAMUNDA_DATA_SOURCE_BEAN_NAME)
- public DataSource camundaDataSource() {
- if (mBeanExporter != null) {
- mBeanExporter.addExcludedBean(CAMUNDA_DATA_SOURCE_BEAN_NAME);
- }
- logger.debug("Creating Camunda HikariDataSource bean ... ");
- final HikariConfig hikariConfig = this.camundaDbConfig();
- return new HikariDataSource(hikariConfig);
- }
-
- @Bean(name = CAMUNDA_TRANSACTION_MANAGER_BEAN_NAME)
- public PlatformTransactionManager camundaTransactionManager(
- @Qualifier(CAMUNDA_DATA_SOURCE_BEAN_NAME) final DataSource dataSource) {
- return new DataSourceTransactionManager(dataSource);
- }
-
- @Bean
- public SpringBootProcessEnginePlugin transactionManagerProcessEnginePlugin(
- @Qualifier(CAMUNDA_TRANSACTION_MANAGER_BEAN_NAME) final PlatformTransactionManager camundaTransactionManager) {
- return new SpringBootProcessEnginePlugin() {
- @Override
- public void preInit(final SpringProcessEngineConfiguration processEngineConfiguration) {
- logger.info("Setting Camunda TransactionManager ...");
- processEngineConfiguration.setTransactionManager(camundaTransactionManager);
-
- }
- };
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaVariableNameConstants.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaVariableNameConstants.java
deleted file mode 100644
index a7acc3ec25..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/CamundaVariableNameConstants.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class CamundaVariableNameConstants {
-
- public static final String JOB_ID_PARAM_NAME = "jobId";
- public static final String JOB_BUSINESS_KEY_PARAM_NAME = "jobBusinessKey";
- public static final String CREATE_NS_REQUEST_PARAM_NAME = "createNsRequest";
- public static final String GLOBAL_CUSTOMER_ID_PARAM_NAME = "globalCustomerId";
- public static final String SERVICE_TYPE_PARAM_NAME = "serviceType";
-
- public static final String NS_PACKAGE_MODEL_PARAM_NAME = "NSPackageModel";
- public static final String NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME = "NsWorkflowProcessingException";
- public static final String CREATE_NS_RESPONSE_PARAM_NAME = "createNsResponse";
-
- public static final String INSTANTIATE_NS_REQUEST_PARAM_NAME = "instantiateNsRequest";
- public static final String OCC_ID_PARAM_NAME = "occId";
- public static final String NS_INSTANCE_ID_PARAM_NAME = "NsInstanceId";
- public static final String NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME = "NetworkServiceDescriptor";
- public static final String VNF_CREATE_INSTANTIATE_REQUESTS = "vnfCreateInstantiateRequests";
-
- public static final String NF_INST_ID_PARAM_NAME = "NF_INST_ID";
- public static final String CREATE_VNF_RESPONSE_PARAM_NAME = "createVnfResponse";
- public static final String OPERATION_STATUS_PARAM_NAME = "operationStatus";
-
- public static final String TERMINATE_NS_REQUEST_PARAM_NAME = "terminateNsRequest";
- public static final String NFVO_NF_INST_IDS_PARAM_NAME = "nfvoNfInstIds";
- public static final String DELETE_VNF_RESPONSE_PARAM_NAME = "deleteVnfResponse";
- public static final String TERMINATE_VNF_VNFID_PARAM_NAME = "vnfId";
-
- private CamundaVariableNameConstants() {}
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/Constants.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/Constants.java
deleted file mode 100644
index c6c56c9eb3..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/Constants.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class Constants {
-
- public static final String TENANT_ID = "ns-workflow-engine-tenant";
- public static final String NS_WORKFLOW_ENGINE = "NS-WORKFLOW-ENGINE";
- public static final String CREATE_NS_WORKFLOW_NAME = "CreateNs";
- public static final String INSTANTIATE_NS_WORKFLOW_NAME = "InstantiateNs";
- public static final String TERMINATE_NS_WORKFLOW_NAME = "TerminateNs";
- public static final String DELETE_NS_WORKFLOW_NAME = "DeleteNs";
- public static final String GET_NS_OCCURRENCE_OPERATION_STATUS_NAME = "GetNsOccurrenceOperationStatus";
-
-
- private Constants() {}
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/GsonProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/GsonProvider.java
deleted file mode 100644
index 31961d5b86..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/GsonProvider.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import java.time.LocalDateTime;
-import org.onap.so.etsi.nfvo.ns.lcm.JSON;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.utils.LocalDateTimeTypeAdapter;
-import org.springframework.stereotype.Component;
-import org.threeten.bp.OffsetDateTime;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-public class GsonProvider {
-
- private final JSON.OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new JSON.OffsetDateTimeTypeAdapter();
-
- public Gson getGson() {
- return JSON.createGson().registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter)
- .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeTypeAdapter()).create();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/EtsiCatalogManagerRequestFailureException.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/EtsiCatalogManagerRequestFailureException.java
deleted file mode 100644
index 553d2f1cf8..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/EtsiCatalogManagerRequestFailureException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class EtsiCatalogManagerRequestFailureException extends RuntimeException {
-
- private static final long serialVersionUID = 66862444537194516L;
-
- public EtsiCatalogManagerRequestFailureException(final String message) {
- super(message);
- }
-
- public EtsiCatalogManagerRequestFailureException(final String message, final Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/NsRequestProcessingException.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/NsRequestProcessingException.java
deleted file mode 100644
index 0901f077d2..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/NsRequestProcessingException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions;
-
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-/**
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR)
-public class NsRequestProcessingException extends RuntimeException {
-
- private static final long serialVersionUID = 66862444537194516L;
- private final InlineResponse400 problemDetails;
-
- public NsRequestProcessingException(final String message) {
- super(message);
- problemDetails = null;
- }
-
- public NsRequestProcessingException(final String message, final InlineResponse400 problemDetails) {
- super(message);
- this.problemDetails = problemDetails;
- }
-
- @Override
- public synchronized Throwable fillInStackTrace() {
- return this;
- }
-
- public InlineResponse400 getProblemDetails() {
- return problemDetails;
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiClientProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiClientProvider.java
deleted file mode 100644
index 673662aae8..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiClientProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai;
-
-import org.onap.aaiclient.client.aai.AAIResourcesClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class AaiClientProvider {
-
- @Bean
- public AAIResourcesClient getAaiClient() {
- return new AAIResourcesClient();
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiPropertiesImpl.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiPropertiesImpl.java
deleted file mode 100644
index 25a43a86d0..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiPropertiesImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai;
-
-import org.onap.aaiclient.client.aai.AAIProperties;
-import org.onap.aaiclient.client.aai.AAIVersion;
-import org.onap.so.client.CacheProperties;
-import org.onap.so.spring.SpringContextHelper;
-import org.springframework.context.ApplicationContext;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class AaiPropertiesImpl implements AAIProperties {
-
- private final String endpoint;
- private final String encryptedBasicAuth;
- private final String encryptionKey;
- private final String aaiVersion;
- private final Long readTimeout;
- private final Long connectionTimeout;
- private final boolean enableCaching;
- private final Long cacheMaxAge;
-
- public AaiPropertiesImpl() {
- final ApplicationContext context = SpringContextHelper.getAppContext();
- this.endpoint = context.getEnvironment().getProperty("aai.endpoint");
- this.encryptedBasicAuth = context.getEnvironment().getProperty("aai.auth");
- this.encryptionKey = context.getEnvironment().getProperty("mso.key");
- this.aaiVersion = context.getEnvironment().getProperty("aai.version");
- this.readTimeout = context.getEnvironment().getProperty("aai.readTimeout", Long.class, 60000L);
- this.connectionTimeout = context.getEnvironment().getProperty("aai.connectionTimeout", Long.class, 60000L);
- this.enableCaching = context.getEnvironment().getProperty("aai.caching.enabled", Boolean.class, false);
- this.cacheMaxAge = context.getEnvironment().getProperty("aai.caching.maxAge", Long.class, 60000L);
- }
-
- @Override
- public URL getEndpoint() throws MalformedURLException {
- return new URL(endpoint);
- }
-
- @Override
- public String getSystemName() {
- return "MSO";
- }
-
- @Override
- public AAIVersion getDefaultVersion() {
- for (final AAIVersion version : AAIVersion.values()) {
- if (version.toString().equalsIgnoreCase(this.aaiVersion)) {
- return version;
- } ;
-
- }
- return AAIVersion.LATEST;
- }
-
- @Override
- public String getAuth() {
- return encryptedBasicAuth;
- }
-
- @Override
- public String getKey() {
- return encryptionKey;
- }
-
- @Override
- public Long getReadTimeout() {
- return this.readTimeout;
- }
-
- @Override
- public Long getConnectionTimeout() {
- return this.connectionTimeout;
- }
-
- @Override
- public boolean isCachingEnabled() {
- return this.enableCaching;
- }
-
- @Override
- public CacheProperties getCacheProperties() {
- return new AAICacheProperties() {
- @Override
- public Long getMaxAge() {
- return cacheMaxAge;
- }
- };
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProvider.java
deleted file mode 100644
index a54a6f41f9..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai;
-
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.ServiceInstance;
-import java.util.Optional;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface AaiServiceProvider {
-
- void createServiceInstance(final String globalCustomerId, final String serviceType,
- final ServiceInstance aaiServiceInstance);
-
- void createGenericVnfAndConnectServiceInstance(final String serviceInstanceId, final String vnfId,
- final GenericVnf genericVnf);
-
- void connectGenericVnfToTenant(final String vnfId, final String cloudOwner, final String cloudRegion,
- final String tenantId);
-
- Optional<GenericVnf> getGenericVnf(final String vnfId);
-
- void deleteGenericVnf(final String vnfId);
-
- void deleteServiceInstance(final String globalCustomerId, final String serviceType, final String serviceInstanceId);
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProviderImpl.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProviderImpl.java
deleted file mode 100644
index a3b3fa9d66..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/aai/AaiServiceProviderImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai;
-
-import java.util.Optional;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.aai.domain.yang.ServiceInstance;
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-@Service
-public class AaiServiceProviderImpl implements AaiServiceProvider {
- private static final Logger logger = LoggerFactory.getLogger(AaiServiceProviderImpl.class);
- private final AaiClientProvider aaiClientProvider;
-
- @Autowired
- public AaiServiceProviderImpl(final AaiClientProvider aaiClientProvider) {
- this.aaiClientProvider = aaiClientProvider;
- }
-
- @Override
- public void createServiceInstance(final String globalCustomerId, final String serviceType,
- final ServiceInstance aaiServiceInstance) {
- logger.info("Creating service instance in AAI: {}", aaiServiceInstance);
- final AAIResourceUri serviceInstanceURI =
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustomerId)
- .serviceSubscription(serviceType).serviceInstance(aaiServiceInstance.getServiceInstanceId()));
- aaiClientProvider.getAaiClient().createIfNotExists(serviceInstanceURI, Optional.of(aaiServiceInstance));
-
- }
-
- @Override
- public void createGenericVnfAndConnectServiceInstance(final String serviceInstanceId, final String vnfId,
- final GenericVnf genericVnf) {
- logger.info("Creating GenericVnf in AAI: {}", genericVnf);
- final AAIResourceUri genericVnfURI =
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId));
- final AAIResourceUri serviceInstanceURI =
- AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId));
- aaiClientProvider.getAaiClient().createIfNotExists(genericVnfURI, Optional.of(genericVnf))
- .connect(genericVnfURI, serviceInstanceURI);
-
- }
-
- @Override
- public void connectGenericVnfToTenant(final String vnfId, final String cloudOwner, final String cloudRegion,
- final String tenantId) {
- logger.info("Connecting GenericVnf {} to {}/{}/{} in AAI", vnfId, cloudOwner, cloudRegion, tenantId);
- final AAIResourceUri tenantURI = AAIUriFactory.createResourceUri(
- AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).tenant(tenantId));
- final AAIResourceUri genericVnfURI =
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId));
- aaiClientProvider.getAaiClient().connect(tenantURI, genericVnfURI);
- }
-
- @Override
- public Optional<GenericVnf> getGenericVnf(final String vnfId) {
- return aaiClientProvider.getAaiClient().get(GenericVnf.class,
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)));
- }
-
- @Override
- public void deleteGenericVnf(final String vnfId) {
- logger.info("Deleting GenericVnf with id: {} from AAI.", vnfId);
- final AAIResourceUri aaiResourceUri =
- AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId));
- aaiClientProvider.getAaiClient().delete(aaiResourceUri);
- }
-
- @Override
- public void deleteServiceInstance(final String globalCustomerId, final String serviceType,
- final String serviceInstanceId) {
- logger.info(
- "Deleting Service Instance with \nGlobal Customer Id: {}, \nService Type: {}, and \nService Instance Id: {} \nfrom AAI.",
- globalCustomerId, serviceType, serviceInstanceId);
- final AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
- .customer(globalCustomerId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
- aaiClientProvider.getAaiClient().delete(serviceInstanceUri);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java
deleted file mode 100644
index 65d982c6cc..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog;
-
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface EtsiCatalogPackageManagementServiceProvider {
-
- Optional<NsdInfo> getNSPackageModel(final String nsdId);
-
- Optional<VnfPkgInfo> getVnfPkgInfo(final String vnfPkgId);
-
- Optional<NetworkServiceDescriptor> getNetworkServiceDescriptor(final String nsdId);
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProviderImpl.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProviderImpl.java
deleted file mode 100644
index 749e85e3db..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProviderImpl.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_SERVICE_PROVIDER_BEAN;
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser.NetworkServiceDescriptorParser;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class EtsiCatalogPackageManagementServiceProviderImpl implements EtsiCatalogPackageManagementServiceProvider {
-
- private static final Logger logger = LoggerFactory.getLogger(EtsiCatalogPackageManagementServiceProviderImpl.class);
-
- private final HttpRestServiceProvider httpServiceProvider;
- private final EtsiCatalogUrlProvider etsiCatalogUrlProvider;
- private final NetworkServiceDescriptorParser networkServiceDescriptorParser;
-
- @Autowired
- public EtsiCatalogPackageManagementServiceProviderImpl(final EtsiCatalogUrlProvider etsiCatalogUrlProvider,
- @Qualifier(ETSI_CATALOG_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider,
- final NetworkServiceDescriptorParser networkServiceDescriptorParser) {
- this.etsiCatalogUrlProvider = etsiCatalogUrlProvider;
- this.httpServiceProvider = httpServiceProvider;
- this.networkServiceDescriptorParser = networkServiceDescriptorParser;
- }
-
- @Override
- public Optional<NsdInfo> getNSPackageModel(final String nsdId) {
- try {
- final ResponseEntity<NsdInfo> response =
- httpServiceProvider.getHttpResponse(etsiCatalogUrlProvider.getNsPackageUrl(nsdId), NsdInfo.class);
- if (response.getStatusCode().is2xxSuccessful()) {
- return Optional.ofNullable(response.getBody());
- }
- return Optional.empty();
- } catch (final Exception restProcessingException) {
- final String message = "Caught exception while getting NS package model for: " + nsdId;
- throw new EtsiCatalogManagerRequestFailureException(message, restProcessingException);
- }
- }
-
- @Override
- public Optional<VnfPkgInfo> getVnfPkgInfo(final String vnfPkgId) {
- try {
- final ResponseEntity<VnfPkgInfo> response = httpServiceProvider
- .getHttpResponse(etsiCatalogUrlProvider.getVnfPackageUrl(vnfPkgId), VnfPkgInfo.class);
- if (response.getStatusCode().is2xxSuccessful()) {
- return Optional.ofNullable(response.getBody());
- }
- return Optional.empty();
- } catch (final Exception restProcessingException) {
- final String message = "Caught exception while getting VNF package model for: " + vnfPkgId;
- throw new EtsiCatalogManagerRequestFailureException(message, restProcessingException);
- }
- }
-
- @Override
- public Optional<NetworkServiceDescriptor> getNetworkServiceDescriptor(final String nsdId) {
- try {
- final ResponseEntity<byte[]> response = httpServiceProvider
- .getHttpResponse(etsiCatalogUrlProvider.getNsPackageContentUrl(nsdId), byte[].class);
- if (response.getStatusCode().is2xxSuccessful()) {
- if (response.hasBody()) {
- return networkServiceDescriptorParser.parse(response.getBody());
- }
- logger.error("Received response without body ...");
- }
- return Optional.empty();
- } catch (final Exception restProcessingException) {
- final String message = "Caught exception while getting NS package content for: " + nsdId;
- throw new EtsiCatalogManagerRequestFailureException(message, restProcessingException);
- }
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java
deleted file mode 100644
index 7adf87adf4..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog;
-
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
-import java.util.Iterator;
-import java.util.concurrent.TimeUnit;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.onap.logging.filter.spring.SpringClientPayloadFilter;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.configuration.rest.HttpClientConnectionConfiguration;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * Configures the HttpRestServiceProvider to make REST calls to the ETSI Catalog Manager
- *
- * @author gareth.roper@est.tech
- */
-
-@Configuration
-public class EtsiCatalogServiceProviderConfiguration {
- private static final Logger LOGGER = LoggerFactory.getLogger(EtsiCatalogServiceProviderConfiguration.class);
-
- public static final String ETSI_CATALOG_SERVICE_PROVIDER_BEAN = "etsiCatalogServiceProvider";
-
- public static final String ETSI_CATALOG_REST_TEMPLATE_BEAN = "etsiCatalogRestTemplate";
-
- private final HttpClientConnectionConfiguration clientConnectionConfiguration;
-
- @Value("${etsi-catalog-manager.http.client.ssl.trust-store:#{null}}")
- private Resource trustStore;
- @Value("${etsi-catalog-manager.http.client.ssl.trust-store-password:#{null}}")
- private String trustStorePassword;
-
- private final GsonProvider gsonProvider;
-
- @Autowired
- public EtsiCatalogServiceProviderConfiguration(
- final HttpClientConnectionConfiguration clientConnectionConfiguration, final GsonProvider gsonProvider) {
- this.clientConnectionConfiguration = clientConnectionConfiguration;
- this.gsonProvider = gsonProvider;
- }
-
- @Bean
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- public RestTemplate etsiCatalogRestTemplate() {
- final RestTemplate restTemplate = new RestTemplate();
- restTemplate.getInterceptors().add(new SOSpringClientFilter());
- restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
- return restTemplate;
- }
-
- @Bean
- @Qualifier(ETSI_CATALOG_SERVICE_PROVIDER_BEAN)
- public HttpRestServiceProvider etsiCatalogHttpRestServiceProvider(
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN) final RestTemplate restTemplate) {
- setGsonMessageConverter(restTemplate);
-
- final HttpClientBuilder httpClientBuilder = getHttpClientBuilder();
- if (trustStore != null) {
- try {
- LOGGER.debug("Setting up HttpComponentsClientHttpRequestFactory with SSL Context");
- LOGGER.debug("Setting client trust-store: {}", trustStore.getURL());
- LOGGER.debug("Creating SSLConnectionSocketFactory with AllowAllHostsVerifier ... ");
- final SSLContext sslContext = new SSLContextBuilder()
- .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray()).build();
- final SSLConnectionSocketFactory sslConnectionSocketFactory =
- new SSLConnectionSocketFactory(sslContext, AllowAllHostsVerifier.INSTANCE);
- httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory);
- final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
- .<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE)
- .register("https", sslConnectionSocketFactory).build();
-
- httpClientBuilder.setConnectionManager(getConnectionManager(socketFactoryRegistry));
- } catch (final KeyManagementException | NoSuchAlgorithmException | KeyStoreException | CertificateException
- | IOException exception) {
- LOGGER.error("Error reading truststore, TLS connection will fail.", exception);
- }
-
- } else {
- LOGGER.debug("Setting connection manager without SSL ConnectionSocketFactory ...");
- httpClientBuilder.setConnectionManager(getConnectionManager());
- }
-
- final HttpComponentsClientHttpRequestFactory factory =
- new HttpComponentsClientHttpRequestFactory(httpClientBuilder.build());
- restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(factory));
-
- return new HttpRestServiceProviderImpl(restTemplate, new BasicHttpHeadersProvider().getHttpHeaders());
- }
-
- private PoolingHttpClientConnectionManager getConnectionManager(
- final Registry<ConnectionSocketFactory> socketFactoryRegistry) {
- return new PoolingHttpClientConnectionManager(socketFactoryRegistry, null, null, null,
- clientConnectionConfiguration.getTimeToLiveInMins(), TimeUnit.MINUTES);
- }
-
- private PoolingHttpClientConnectionManager getConnectionManager() {
- return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(),
- TimeUnit.MINUTES);
- }
-
- private HttpClientBuilder getHttpClientBuilder() {
- return HttpClientBuilder.create().setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute())
- .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections())
- .setDefaultRequestConfig(getRequestConfig());
- }
-
- private RequestConfig getRequestConfig() {
- return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds())
- .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build();
- }
-
- private static final class AllowAllHostsVerifier implements HostnameVerifier {
-
- private static final AllowAllHostsVerifier INSTANCE = new AllowAllHostsVerifier();
-
- @Override
- public boolean verify(final String hostname, final SSLSession session) {
- LOGGER.debug("Skipping hostname verification ...");
- return true;
- }
-
- }
-
- public void setGsonMessageConverter(final RestTemplate restTemplate) {
- final Iterator<HttpMessageConverter<?>> iterator = restTemplate.getMessageConverters().iterator();
- while (iterator.hasNext()) {
- if (iterator.next() instanceof MappingJackson2HttpMessageConverter) {
- iterator.remove();
- }
- }
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gsonProvider.getGson()));
- }
-
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogUrlProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogUrlProvider.java
deleted file mode 100644
index 54f6ad6543..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogUrlProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class EtsiCatalogUrlProvider {
-
- @Value("${etsi-catalog-manager.base.endpoint}")
- private String etsiCatalogManagerEndpoint;
-
- public String getNsPackageUrl(final String nsdId) {
- return etsiCatalogManagerEndpoint + "/nsd/v1/ns_descriptors/" + nsdId;
- }
-
- public String getNsPackageContentUrl(final String nsdId) {
- return etsiCatalogManagerEndpoint + "/nsd/v1/ns_descriptors/" + nsdId + "/nsd_content";
- }
-
- public String getVnfPackageUrl(final String vnfPkgId) {
- return etsiCatalogManagerEndpoint + "/vnfpkgm/v1/vnf_packages/" + vnfPkgId;
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterConfiguration.java
deleted file mode 100644
index 6776d8ba0b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterConfiguration.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm;
-
-import java.io.IOException;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateException;
-import java.util.Iterator;
-import javax.net.ssl.SSLContext;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContextBuilder;
-import org.onap.logging.filter.spring.SpringClientPayloadFilter;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.configuration.rest.HttpComponentsClientConfiguration;
-import org.onap.so.configuration.rest.HttpHeadersProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class Sol003AdapterConfiguration {
-
- private static final Logger logger = LoggerFactory.getLogger(Sol003AdapterConfiguration.class);
-
- public static final String SOL003_ADAPTER_REST_TEMPLATE_BEAN = "Sol003AdapterRestTemplateBean";
- public static final String SOL003_ADAPTER_HTTP_REST_SERVICE_PROVIDER_BEAN =
- "Sol003AdapterHttpRestServiceProviderBean";
-
- @Value("${rest.http.client.configuration.ssl.trustStore:#{null}}")
- private Resource trustStore;
-
- @Value("${rest.http.client.configuration.ssl.trustStorePassword:#{null}}")
- private String trustStorePassword;
-
- @Value("${so.adapters.sol003-adapter.auth:Basic dm5mbTpwYXNzd29yZDEk}")
- private String sol003AdapterBasicAuth;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- @Bean
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN)
- public RestTemplate sol003AdapterRestTemplate(
- @Autowired final HttpComponentsClientConfiguration httpComponentsClientConfiguration) {
-
- final HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
- httpComponentsClientConfiguration.httpComponentsClientHttpRequestFactory();
-
- final RestTemplate restTemplate =
- new RestTemplate(new BufferingClientHttpRequestFactory(clientHttpRequestFactory));
- restTemplate.getInterceptors().add(new SOSpringClientFilter());
- restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
- return restTemplate;
-
- }
-
- @Bean
- @Qualifier(SOL003_ADAPTER_HTTP_REST_SERVICE_PROVIDER_BEAN)
- public HttpRestServiceProvider sol003AdapaterHttpRestServiceProvider(
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN) @Autowired final RestTemplate restTemplate) {
-
- if (trustStore != null) {
- setTrustStore(restTemplate);
- }
- setGsonMessageConverter(restTemplate);
- return getHttpRestServiceProvider(restTemplate, new BasicHttpHeadersProvider(sol003AdapterBasicAuth));
- }
-
- private void setTrustStore(final RestTemplate restTemplate) {
- try {
- final SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(getSSLContext());
- final HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
- final HttpComponentsClientHttpRequestFactory factory =
- new HttpComponentsClientHttpRequestFactory(httpClient);
- restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(factory));
- } catch (final Exception exception) {
- logger.error("Error reading truststore, TLS connection to VNFM will fail.", exception);
- }
- }
-
- private SSLContext getSSLContext() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException,
- CertificateException, IOException {
- if (trustStore != null) {
- logger.info("Setting truststore: {}", trustStore.getURL());
- return new SSLContextBuilder().loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray())
- .build();
- }
- logger.info("Setting Default SSL ...");
- return SSLContext.getDefault();
-
- }
-
- private HttpRestServiceProvider getHttpRestServiceProvider(final RestTemplate restTemplate,
- final HttpHeadersProvider httpHeadersProvider) {
- return new HttpRestServiceProviderImpl(restTemplate, httpHeadersProvider.getHttpHeaders());
- }
-
- private void setGsonMessageConverter(final RestTemplate restTemplate) {
- final Iterator<HttpMessageConverter<?>> iterator = restTemplate.getMessageConverters().iterator();
- while (iterator.hasNext()) {
- if (iterator.next() instanceof MappingJackson2HttpMessageConverter) {
- iterator.remove();
- }
- }
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gsonProvider.getGson()));
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProvider.java
deleted file mode 100644
index 4f98e2c267..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProvider.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm;
-
-import java.util.Optional;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-
-public interface Sol003AdapterServiceProvider {
-
- Optional<CreateVnfResponse> invokeCreateInstantiationRequest(final String vnfId, final CreateVnfRequest request);
-
- Optional<QueryJobResponse> getInstantiateOperationJobStatus(final String jobId);
-
- Optional<DeleteVnfResponse> invokeTerminationRequest(final String vnfId);
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProviderImpl.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProviderImpl.java
deleted file mode 100644
index df3a0c2e31..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterServiceProviderImpl.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterConfiguration.SOL003_ADAPTER_HTTP_REST_SERVICE_PROVIDER_BEAN;
-import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
-import org.onap.so.rest.exceptions.InvalidRestRequestException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-@Service
-public class Sol003AdapterServiceProviderImpl implements Sol003AdapterServiceProvider {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(Sol003AdapterServiceProviderImpl.class);
- public static final String RECEIVED_RESPONSE_WITHOUT_BODY = "Received response without body: {}";
-
- private final Sol003AdapterUrlProvider urlProvider;
- private final HttpRestServiceProvider httpServiceProvider;
-
- @Autowired
- public Sol003AdapterServiceProviderImpl(final Sol003AdapterUrlProvider urlProvider,
- @Qualifier(SOL003_ADAPTER_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider) {
- this.urlProvider = urlProvider;
- this.httpServiceProvider = httpServiceProvider;
- }
-
- @Override
- public Optional<CreateVnfResponse> invokeCreateInstantiationRequest(final String vnfId,
- final CreateVnfRequest request) {
- try {
- final String url = urlProvider.getCreateInstantiateUrl(vnfId);
-
- final ResponseEntity<CreateVnfResponse> response =
- httpServiceProvider.postHttpRequest(request, url, CreateVnfResponse.class);
-
- final HttpStatus httpStatus = response.getStatusCode();
- if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
- LOGGER.error("Unable to invoke HTTP POST using URL: {}, Response Code: {}", url, httpStatus.value());
- return Optional.empty();
- }
-
- if (!response.hasBody()) {
- LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
- return Optional.empty();
- }
-
- final CreateVnfResponse createVnfResponse = response.getBody();
-
- if (StringUtils.isBlank(createVnfResponse.getJobId())) {
- LOGGER.error("Received invalid instantiation response: {}", response);
- return Optional.empty();
- }
-
- return Optional.of(createVnfResponse);
- } catch (final RestProcessingException | InvalidRestRequestException
- | HttpResouceNotFoundException httpInvocationException) {
- LOGGER.error("Unexpected error while processing create and instantiation request", httpInvocationException);
- return Optional.empty();
- }
-
- }
-
- @Override
- public Optional<QueryJobResponse> getInstantiateOperationJobStatus(final String jobId) {
- try {
- final String url = urlProvider.getJobStatusUrl(jobId);
-
- final ResponseEntity<QueryJobResponse> response =
- httpServiceProvider.getHttpResponse(url, QueryJobResponse.class);
-
- final HttpStatus httpStatus = response.getStatusCode();
-
- if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
- LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: ", url, httpStatus.value());
- return Optional.empty();
- }
-
- if (!response.hasBody()) {
- LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
- return Optional.empty();
- }
- return Optional.of(response.getBody());
- } catch (final RestProcessingException | InvalidRestRequestException | HttpResouceNotFoundException exception) {
- LOGGER.error("Unexpected error while processing job request", exception);
- throw exception;
- }
- }
-
- @Override
- public Optional<DeleteVnfResponse> invokeTerminationRequest(final String vnfId) {
- try {
- final String url = urlProvider.getTerminateVnfUrl(vnfId);
-
- final ResponseEntity<DeleteVnfResponse> response =
- httpServiceProvider.deleteHttpRequest(url, DeleteVnfResponse.class);
- final HttpStatus httpStatus = response.getStatusCode();
- if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
- LOGGER.error("Unable to invoke HTTP DELETE using URL: {}, Response Code: {}", url, httpStatus.value());
- return Optional.empty();
- }
- if (!response.hasBody()) {
- LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
- return Optional.empty();
- }
-
- final DeleteVnfResponse deleteVnfResponse = response.getBody();
- if (StringUtils.isBlank(deleteVnfResponse.getJobId())) {
- LOGGER.error("Received invalid terminate response: {}", response);
- return Optional.empty();
- }
-
- return Optional.of(deleteVnfResponse);
- } catch (final RestProcessingException | InvalidRestRequestException
- | HttpResouceNotFoundException httpInvocationException) {
- LOGGER.error("Unexpected error while processing terminate request", httpInvocationException);
- return Optional.empty();
- }
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterUrlProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterUrlProvider.java
deleted file mode 100644
index e3abc059f5..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/vnfm/Sol003AdapterUrlProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm;
-
-import java.net.URI;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.util.UriComponentsBuilder;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class Sol003AdapterUrlProvider {
-
- private final URI baseUri;
-
- @Autowired
- public Sol003AdapterUrlProvider(
- @Value("${so.adapters.sol003-adapter.url:https://so-vnfm-adapter.onap:9092/so/vnfm-adapter/v1/}") final String sol003AdapterUrl) {
- this.baseUri = UriComponentsBuilder.fromHttpUrl(sol003AdapterUrl).build().toUri();
- }
-
- /**
- * Get VNFM create and instantiate URL
- *
- * @param vnfId The identifier of the VNF. This must be the vnf-id of an existing generic-vnf in AAI.
- * @return VNFM create and instantiate URL
- */
- public String getCreateInstantiateUrl(final String vnfId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment("vnfs").pathSegment(vnfId).build().toString();
- }
-
- /**
- * Get job status URL
- *
- * @param jobId The instantiation job identifier
- * @return job status URL
- */
- public String getJobStatusUrl(final String jobId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment("jobs").pathSegment(jobId).build().toString();
- }
-
- /**
- * Get VNFM terminate vnf URL
- *
- * @param vnfId
- * @return
- */
- public String getTerminateVnfUrl(final String vnfId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment("vnfs").pathSegment(vnfId).build().toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileEntry.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileEntry.java
deleted file mode 100644
index cfe5b94859..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileEntry.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Objects;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class FileEntry {
-
- private boolean isDirectory;
- private String filePath;
- private byte[] fileContent;
-
- public boolean isDirectory() {
- return isDirectory;
- }
-
- public void setDirectory(final boolean isDirectory) {
- this.isDirectory = isDirectory;
- }
-
- public FileEntry isDirectory(final boolean isDirectory) {
- this.isDirectory = isDirectory;
- return this;
- }
-
- public String getFilePath() {
- return filePath;
- }
-
- public void setFilename(final String filePath) {
- this.filePath = filePath;
- }
-
- public FileEntry filePath(final String filePath) {
- this.filePath = filePath;
- return this;
- }
-
- public byte[] getFileContent() {
- return fileContent;
- }
-
- public void setFileContent(final byte[] fileContent) {
- this.fileContent = fileContent;
- }
-
- public FileEntry fileContent(final byte[] fileContent) {
- this.fileContent = fileContent;
- return this;
- }
-
- public InputStream getFileContentAsStream() {
- if (fileContent == null || fileContent.length == 0) {
- return null;
- }
- return new ByteArrayInputStream(fileContent);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(isDirectory, filePath) + Arrays.hashCode(fileContent);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof FileEntry) {
- final FileEntry other = (FileEntry) obj;
- return Objects.equals(isDirectory, other.isDirectory) && Objects.equals(filePath, other.filePath)
- && Arrays.equals(fileContent, other.fileContent);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class FileEntry {\n");
- sb.append(" isDirectory: ").append(toIndentedString(isDirectory)).append("\n");
- sb.append(" filePath: ").append(toIndentedString(filePath)).append("\n");
- sb.append(" fileContent size: ").append(toIndentedString(fileContent != null ? fileContent.length : 0))
- .append("\n");
- sb.append("}");
- return sb.toString();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptor.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptor.java
deleted file mode 100644
index 6b4fee7151..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptor.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class NetworkServiceDescriptor implements Serializable {
-
- private static final long serialVersionUID = -1739293595041180242L;
-
- private String type;
-
- private Map<String, Object> properties = new HashMap<>();
-
- private List<VirtualNetworkFunction> vnfs = new ArrayList<>();
-
- public String getType() {
- return type;
- }
-
- public void setType(final String type) {
- this.type = type;
- }
-
- public NetworkServiceDescriptor type(final String type) {
- this.type = type;
- return this;
- }
-
- public Map<String, Object> getProperties() {
- return properties;
- }
-
- public void setProperties(final Map<String, Object> properties) {
- this.properties = properties;
- }
-
- public NetworkServiceDescriptor properties(final Map<String, Object> properties) {
- this.properties = properties;
- return this;
- }
-
- public List<VirtualNetworkFunction> getVnfs() {
- return vnfs;
- }
-
- public void setVnfs(final List<VirtualNetworkFunction> vnfs) {
- if (vnfs != null) {
- this.vnfs = vnfs;
- } else {
- this.vnfs = new ArrayList<>();
- }
- }
-
- public NetworkServiceDescriptor addVnfPkgIdsItem(final VirtualNetworkFunction vnf) {
- if (this.vnfs == null) {
- this.vnfs = new ArrayList<>();
- }
- this.vnfs.add(vnf);
- return this;
- }
-
- public NetworkServiceDescriptor vnfs(final List<VirtualNetworkFunction> vnfs) {
- this.vnfs = vnfs;
- return this;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(type, properties, vnfs);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof NetworkServiceDescriptor) {
- final NetworkServiceDescriptor other = (NetworkServiceDescriptor) obj;
- return Objects.equals(type, other.type) && Objects.equals(properties, other.properties)
- && Objects.equals(vnfs, other.vnfs);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NetworkServiceDescriptor {\n");
- sb.append(" type: ").append(toIndentedString(type)).append("\n");
- sb.append(" properties: ").append(toIndentedString(properties)).append("\n");
- sb.append(" vnfs: ").append(toIndentedString(vnfs)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/ToscaMetadata.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/ToscaMetadata.java
deleted file mode 100644
index c07a55c459..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/ToscaMetadata.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class ToscaMetadata {
-
- private Map<String, String> entries = new HashMap<>();
-
- public Map<String, String> getEntries() {
- return entries;
- }
-
- public void addEntry(final String name, final String value) {
- this.entries.put(name, value);
- }
-
- public boolean hasEntry(final String name) {
- return this.entries.containsKey(name);
- }
-
- public String getEntry(final String name) {
- return this.entries.get(name);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(entries);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ToscaMetadata) {
- final ToscaMetadata other = (ToscaMetadata) obj;
- return Objects.equals(entries, other.entries);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class ToscaMetadata {\n");
- sb.append(" entries: ").append(toIndentedString(entries)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/VirtualNetworkFunction.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/VirtualNetworkFunction.java
deleted file mode 100644
index f4c3632589..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/VirtualNetworkFunction.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class VirtualNetworkFunction implements Serializable {
-
- private static final long serialVersionUID = 3164293220359211834L;
-
- private String vnfdId;
- private String vnfName;
- private List<String> vnfmInfoList;
- private Map<String, Object> properties = new HashMap<>();
-
- public String getVnfdId() {
- return vnfdId;
- }
-
- public void setVnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public VirtualNetworkFunction vnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- return this;
- }
-
- public String getVnfName() {
- return vnfName;
- }
-
- public void setVnfName(final String vnfName) {
- this.vnfName = vnfName;
- }
-
- public VirtualNetworkFunction vnfName(final String vnfName) {
- this.vnfName = vnfName;
- return this;
- }
-
- public List<String> getVnfmInfoList() {
- return vnfmInfoList;
- }
-
- public void setVnfmInfoList(final List<String> vnfmInfoList) {
- this.vnfmInfoList = vnfmInfoList;
- }
-
- public VirtualNetworkFunction vnfmInfoList(final List<String> vnfmInfoList) {
- this.vnfmInfoList = vnfmInfoList;
- return this;
- }
-
- public Map<String, Object> getProperties() {
- return properties;
- }
-
- public void setProperties(final Map<String, Object> properties) {
- this.properties = properties;
- }
-
- public VirtualNetworkFunction properties(final Map<String, Object> properties) {
- this.properties = properties;
- return this;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(vnfdId, vnfName, vnfmInfoList, properties);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof VirtualNetworkFunction) {
- final VirtualNetworkFunction other = (VirtualNetworkFunction) obj;
- return Objects.equals(vnfdId, other.vnfdId) && Objects.equals(vnfName, other.vnfName)
- && Objects.equals(vnfmInfoList, other.vnfmInfoList) && Objects.equals(properties, other.properties);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class VirtualNetworkFunction {\n");
- sb.append(" vnfdId: ").append(toIndentedString(vnfdId)).append("\n");
- sb.append(" vnfName: ").append(toIndentedString(vnfName)).append("\n");
- sb.append(" vnfmInfo: ").append(toIndentedString(vnfmInfoList)).append("\n");
- sb.append(" properties: ").append(toIndentedString(properties)).append("\n");
-
- sb.append("}");
- return sb.toString();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/FileParser.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/FileParser.java
deleted file mode 100644
index 2a37922e9b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/FileParser.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
-
-import java.util.Map;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface FileParser {
-
- Map<String, Object> getFileContent(final FileEntry entryDefinitionFileEntry);
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParser.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParser.java
deleted file mode 100644
index cc92234750..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParser.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import org.apache.commons.io.IOUtils;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.VirtualNetworkFunction;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class NetworkServiceDescriptorParser {
- public static final String NS_NODE_TYPE = "tosca.nodes.nfv.NS";
- private static final String NODE_TYPE = "node_type";
- private static final String SUBSTITUTION_MAPPINGS = "substitution_mappings";
- private static final Logger logger = LoggerFactory.getLogger(NetworkServiceDescriptorParser.class);
- private static final String VNF_TYPE = "tosca.nodes.nfv.VNF";
- private static final String PROPERTIES = "properties";
- private static final String TYPE = "type";
- private static final String NODE_TEMPLATES = "node_templates";
- private static final String TOPOLOGY_TEMPLATE = "topology_template";
- private static final String ENTRY_DEFINITIONS = "Entry-Definitions";
- private static final String TOSCA_META_PATH_FILE_NAME = "TOSCA-Metadata/TOSCA.meta";
- private final ToscaMetadataParser toscaMetadataParser;
- private final FileParser fileParser;
-
- @Autowired
- public NetworkServiceDescriptorParser(final ToscaMetadataParser toscaMetadataParser, final FileParser fileParser) {
- this.toscaMetadataParser = toscaMetadataParser;
- this.fileParser = fileParser;
- }
-
- public Optional<NetworkServiceDescriptor> parse(final byte[] zipBytes) {
- try {
- final Map<String, FileEntry> files = getZipContent(zipBytes);
- if (isMetaFilePresent(files)) {
- final Optional<ToscaMetadata> optional =
- toscaMetadataParser.parse(files.get(TOSCA_META_PATH_FILE_NAME));
- if (optional.isPresent()) {
- final ToscaMetadata toscaMetadata = optional.get();
- logger.info("Parsed ToscaMetadata {}", toscaMetadata);
- final String entryDefinitionFile = toscaMetadata.getEntry(ENTRY_DEFINITIONS);
- if (entryDefinitionFile != null && files.containsKey(entryDefinitionFile)) {
- final Map<String, Object> fileContent =
- fileParser.getFileContent(files.get(entryDefinitionFile));
- final Map<String, Object> topologyTemplates = getTopologyTemplates(fileContent);
- final Map<String, Object> nodeTemplates = getNodeTemplates(topologyTemplates);
-
- final Optional<NetworkServiceDescriptor> nsdOptional =
- getNetworkServiceDescriptor(topologyTemplates);
- if (nsdOptional.isPresent()) {
- final NetworkServiceDescriptor networkServiceDescriptor = nsdOptional.get();
- networkServiceDescriptor.setVnfs(getVirtualNetworkFunctions(nodeTemplates));
- return Optional.of(networkServiceDescriptor);
- }
-
- }
- }
-
- }
-
- logger.error("Unable to find {} file in {}", TOSCA_META_PATH_FILE_NAME, files);
- } catch (final Exception exception) {
- logger.error("Unable to parse nsd zip content", exception);
- }
- return Optional.empty();
- }
-
- @SuppressWarnings("unchecked")
- private Optional<NetworkServiceDescriptor> getNetworkServiceDescriptor(
- final Map<String, Object> topologyTemplates) {
- final Map<String, Object> substitutionMappings =
- (Map<String, Object>) topologyTemplates.get(SUBSTITUTION_MAPPINGS);
- final Object nodeType = substitutionMappings.get(NODE_TYPE);
- if (substitutionMappings != null && NS_NODE_TYPE.equals(nodeType)) {
- final NetworkServiceDescriptor networkServiceDescriptor = new NetworkServiceDescriptor();
- networkServiceDescriptor.setType(nodeType.toString());
- networkServiceDescriptor.setProperties((Map<String, Object>) substitutionMappings.get(PROPERTIES));
- return Optional.of(networkServiceDescriptor);
- }
- logger.error("No {} found in fileContent: {}", SUBSTITUTION_MAPPINGS, topologyTemplates);
-
- return Optional.empty();
- }
-
- private List<VirtualNetworkFunction> getVirtualNetworkFunctions(final Map<String, Object> nodeTemplates) {
- final List<VirtualNetworkFunction> vnfs = new ArrayList<>();
- for (final Entry<String, Object> entry : nodeTemplates.entrySet()) {
- @SuppressWarnings("unchecked")
- final Map<String, Object> entryValue = (Map<String, Object>) entry.getValue();
- final Object type = entryValue.get(TYPE);
- if (type != null && type.equals(VNF_TYPE)) {
- @SuppressWarnings("unchecked")
- final Map<String, Object> vnfProperties = (Map<String, Object>) entryValue.get(PROPERTIES);
- final VirtualNetworkFunction vnf = new VirtualNetworkFunction();
- vnf.setVnfName(entry.getKey());
-
- if (vnfProperties != null && !vnfProperties.isEmpty()) {
- final Object vnfDescriptorId = vnfProperties.get("descriptor_id");
- @SuppressWarnings("unchecked")
- final List<String> vnfmInfoList = (List<String>) vnfProperties.get("vnfm_info");
- if (vnfDescriptorId != null && vnfmInfoList != null) {
- vnf.setVnfmInfoList(vnfmInfoList);
- vnf.setVnfdId(vnfDescriptorId.toString());
- vnf.setProperties(vnfProperties);
- vnfs.add(vnf);
- } else {
- logger.warn("descriptor_id missing {}", entryValue);
- }
- }
- }
-
- }
- return vnfs;
- }
-
- private Map<String, Object> getNodeTemplates(final Map<String, Object> topologyTemplates) {
- @SuppressWarnings("unchecked")
- final Map<String, Object> nodeTemplates = (Map<String, Object>) topologyTemplates.get(NODE_TEMPLATES);
- if (nodeTemplates != null) {
- logger.debug("Found nodeTemplates: {}", topologyTemplates);
- return nodeTemplates;
- }
- logger.error("No {} found in fileContent: {}", NODE_TEMPLATES, topologyTemplates);
- return Collections.emptyMap();
- }
-
- private Map<String, Object> getTopologyTemplates(final Map<String, Object> fileContent) {
- @SuppressWarnings("unchecked")
- final Map<String, Object> topologyTemplates = (Map<String, Object>) fileContent.get(TOPOLOGY_TEMPLATE);
- if (topologyTemplates != null) {
- logger.debug("Found {}: {}", TOPOLOGY_TEMPLATE, topologyTemplates);
-
- return topologyTemplates;
- }
- logger.error("No {} found in fileContent: {}", TOPOLOGY_TEMPLATE, fileContent);
- return Collections.emptyMap();
- }
-
- private boolean isMetaFilePresent(final Map<String, FileEntry> files) {
- return files.containsKey(TOSCA_META_PATH_FILE_NAME);
- }
-
- private Map<String, FileEntry> getZipContent(final byte[] zipBytes) {
- final Map<String, FileEntry> files = new HashMap<>();
- try (final ZipInputStream inputZipStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));) {
- ZipEntry zipEntry;
- while ((zipEntry = inputZipStream.getNextEntry()) != null) {
- logger.info("{} : {}", zipEntry.getName(), zipEntry.isDirectory());
- if (files.get(zipEntry.getName()) != null) {
- logger.warn("{} File entry already exists ...", zipEntry.getName());
- } else {
- final FileEntry fileEntry = new FileEntry().filePath(zipEntry.getName())
- .fileContent(getBytes(inputZipStream)).isDirectory(zipEntry.isDirectory());
- files.put(zipEntry.getName(), fileEntry);
-
- }
-
- }
- return files;
- } catch (final Exception exception) {
- logger.error("Unable to parse nsd zip content", exception);
- return Collections.emptyMap();
- }
- }
-
- private byte[] getBytes(final ZipInputStream inputZipStream) throws IOException {
- try {
- return IOUtils.toByteArray(inputZipStream);
- } catch (final IOException exception) {
- logger.error("Could not read bytes from file", exception);
- throw exception;
- }
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/ToscaMetadataParser.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/ToscaMetadataParser.java
deleted file mode 100644
index 746416c8e4..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/ToscaMetadataParser.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.commons.lang3.StringUtils.isNotBlank;
-import java.util.List;
-import java.util.Optional;
-import org.apache.commons.io.IOUtils;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class ToscaMetadataParser {
- private static final String ATTRIBUTE_VALUE_SEPARATOR = ":";
- private static final Logger logger = LoggerFactory.getLogger(ToscaMetadataParser.class);
-
- public Optional<ToscaMetadata> parse(final FileEntry toscaMetaFile) {
- try {
- final ToscaMetadata toscaMetadata = new ToscaMetadata();
- final List<String> lines = IOUtils.readLines(toscaMetaFile.getFileContentAsStream(), UTF_8);
- for (final String line : lines) {
- final String trimmedLine = line.trim();
- if (!trimmedLine.isEmpty() && trimmedLine.contains(ATTRIBUTE_VALUE_SEPARATOR)) {
- final String[] entry = trimmedLine.split(ATTRIBUTE_VALUE_SEPARATOR);
- if (entry.length >= 2 && isNotBlank(entry[0]) && isNotBlank(entry[1])) {
- toscaMetadata.addEntry(entry[0].trim(), entry[1].trim());
- } else {
- logger.warn("Unexpected line in metadata file: {}", line);
- }
- } else {
- logger.warn("Unexpected line does not contain valid separator {} in metadata file: {}",
- ATTRIBUTE_VALUE_SEPARATOR, line);
- }
-
- }
- return Optional.of(toscaMetadata);
-
- } catch (final Exception exception) {
- logger.error("Unable to parser metadata file content", exception);
- }
- return Optional.empty();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/YamlFileParser.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/YamlFileParser.java
deleted file mode 100644
index eab6974252..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/YamlFileParser.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
-
-import java.util.Map;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
-import org.springframework.stereotype.Service;
-import org.yaml.snakeyaml.Yaml;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class YamlFileParser implements FileParser {
-
- @Override
- public Map<String, Object> getFileContent(final FileEntry entryDefinitionFileEntry) {
- final Yaml yaml = new Yaml();
- return yaml.load(entryDefinitionFileEntry.getFileContentAsStream());
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/JobExecutorService.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/JobExecutorService.java
deleted file mode 100644
index 14d4fa2f07..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/JobExecutorService.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.CREATE_NS_REQUEST_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.GLOBAL_CUSTOMER_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.INSTANTIATE_NS_REQUEST_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.JOB_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.OCC_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.SERVICE_TYPE_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.TERMINATE_NS_REQUEST_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.CREATE_NS_WORKFLOW_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.DELETE_NS_WORKFLOW_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.INSTANTIATE_NS_WORKFLOW_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.TERMINATE_NS_WORKFLOW_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction.DELETE;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction.INSTANTIATE;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction.TERMINATE;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.ERROR;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED_WITH_ERROR;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.STARTING;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpType;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import com.google.common.collect.ImmutableSet;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class JobExecutorService {
-
- private static final Logger logger = getLogger(JobExecutorService.class);
-
- private static final ImmutableSet<JobStatusEnum> JOB_FINISHED_STATES =
- ImmutableSet.of(FINISHED, ERROR, FINISHED_WITH_ERROR);
-
- private static final int SLEEP_TIME_IN_SECONDS = 5;
-
- @Value("${so-etsi-ns-lcm-workflow-engine.requesttimeout.timeoutInSeconds:300}")
- private int timeOutInSeconds;
-
- private final DatabaseServiceProvider databaseServiceProvider;
- private final WorkflowExecutorService workflowExecutorService;
- private final WorkflowQueryService workflowQueryService;
- private Gson gson;
-
- @Autowired
- public JobExecutorService(final DatabaseServiceProvider databaseServiceProvider,
- final WorkflowExecutorService workflowExecutorService, final WorkflowQueryService workflowQueryService,
- final GsonProvider gsonProvider) {
- this.databaseServiceProvider = databaseServiceProvider;
- this.workflowExecutorService = workflowExecutorService;
- this.workflowQueryService = workflowQueryService;
- gson = gsonProvider.getGson();
- }
-
- public NsInstancesNsInstance runCreateNsJob(final CreateNsRequest createNsRequest, final String globalCustomerId,
- final String serviceType) {
- logger.info("Starting 'Create NS' workflow job for request:\n{}", createNsRequest);
- final NfvoJob newJob = new NfvoJob().startTime(LocalDateTime.now()).jobType("NS").jobAction(JobAction.CREATE)
- .resourceId(createNsRequest.getNsdId()).resourceName(createNsRequest.getNsName())
- .status(JobStatusEnum.STARTING).progress(5);
- databaseServiceProvider.addJob(newJob);
-
- logger.info("New job created in database :\n{}", newJob);
-
- workflowExecutorService.executeWorkflow(newJob.getJobId(), CREATE_NS_WORKFLOW_NAME,
- getVariables(newJob.getJobId(), createNsRequest, globalCustomerId, serviceType));
-
- final ImmutablePair<String, JobStatusEnum> immutablePair =
- waitForJobToFinish(newJob.getJobId(), JOB_FINISHED_STATES);
-
- if (immutablePair.getRight() == null) {
- final String message = "Failed to create NS for request: \n" + createNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
- final JobStatusEnum finalJobStatus = immutablePair.getRight();
- final String processInstanceId = immutablePair.getLeft();
-
- if (!FINISHED.equals(finalJobStatus)) {
-
- final Optional<InlineResponse400> optional = workflowQueryService.getProblemDetails(processInstanceId);
- if (optional.isPresent()) {
- final InlineResponse400 problemDetails = optional.get();
- final String message =
- "Failed to create NS for request: \n" + createNsRequest + " due to \n" + problemDetails;
- logger.error(message);
- throw new NsRequestProcessingException(message, problemDetails);
- }
-
- final String message = "Received unexpected Job Status: " + finalJobStatus
- + " Failed to Create NS for request: \n" + createNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- logger.debug("Will query for CreateNsResponse using processInstanceId:{}", processInstanceId);
- final Optional<NsInstancesNsInstance> optional = workflowQueryService.getCreateNsResponse(processInstanceId);
- if (optional.isEmpty()) {
- final String message =
- "Unable to find CreateNsReponse in Camunda History for process instance: " + processInstanceId;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
- return optional.get();
- }
-
- public String runInstantiateNsJob(final String nsInstanceId, final InstantiateNsRequest instantiateNsRequest) {
-
- final NfvoJob newJob = new NfvoJob().startTime(LocalDateTime.now()).jobType("NS").jobAction(INSTANTIATE)
- .resourceId(nsInstanceId).status(STARTING).progress(0);
- databaseServiceProvider.addJob(newJob);
- logger.info("New job created in database :\n{}", newJob);
-
- final LocalDateTime currentDateTime = LocalDateTime.now();
- final NsLcmOpOcc newNsLcmOpOcc = new NsLcmOpOcc().id(nsInstanceId).operation(NsLcmOpType.INSTANTIATE)
- .operationState(OperationStateEnum.PROCESSING).stateEnteredTime(currentDateTime)
- .startTime(currentDateTime).nfvoNsInst(getNfvoNsInst(nsInstanceId)).isAutoInvocation(false)
- .isCancelPending(false).operationParams(gson.toJson(instantiateNsRequest));
- databaseServiceProvider.addNSLcmOpOcc(newNsLcmOpOcc);
- logger.info("New NSLcmOpOcc created in database :\n{}", newNsLcmOpOcc);
-
- workflowExecutorService.executeWorkflow(newJob.getJobId(), INSTANTIATE_NS_WORKFLOW_NAME,
- getVariables(nsInstanceId, newJob.getJobId(), newNsLcmOpOcc.getId(), instantiateNsRequest));
-
- final ImmutableSet<JobStatusEnum> jobFinishedStates =
- ImmutableSet.of(FINISHED, ERROR, FINISHED_WITH_ERROR, IN_PROGRESS);
- final ImmutablePair<String, JobStatusEnum> immutablePair =
- waitForJobToFinish(newJob.getJobId(), jobFinishedStates);
-
- if (immutablePair.getRight() == null) {
- final String message = "Failed to Instantiate NS for request: \n" + instantiateNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- final JobStatusEnum finalJobStatus = immutablePair.getRight();
-
- if (IN_PROGRESS.equals(finalJobStatus) || FINISHED.equals(finalJobStatus)) {
- logger.info("Instantiation Job status: {}", finalJobStatus);
-
-
- return newNsLcmOpOcc.getId();
- }
-
- final String message = "Received unexpected Job Status: " + finalJobStatus
- + " Failed to instantiate NS for request: \n" + instantiateNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- public String runTerminateNsJob(final String nsInstanceId, final TerminateNsRequest terminateNsRequest) {
- doInitialTerminateChecks(nsInstanceId, terminateNsRequest);
-
- final NfvoJob nfvoJob = new NfvoJob().startTime(LocalDateTime.now()).jobType("NS").jobAction(TERMINATE)
- .resourceId(nsInstanceId).status(STARTING).progress(0);
- databaseServiceProvider.addJob(nfvoJob);
- logger.info("New job created in database :\n{}", nfvoJob);
-
- final LocalDateTime currentDateTime = LocalDateTime.now();
- final NsLcmOpOcc nsLcmOpOcc = new NsLcmOpOcc().id(nsInstanceId).operation(NsLcmOpType.TERMINATE)
- .operationState(OperationStateEnum.PROCESSING).stateEnteredTime(currentDateTime)
- .startTime(currentDateTime).nfvoNsInst(getNfvoNsInst(nsInstanceId)).isAutoInvocation(false)
- .isCancelPending(false).operationParams(gson.toJson(terminateNsRequest));
- databaseServiceProvider.addNSLcmOpOcc(nsLcmOpOcc);
- logger.info("New NSLcmOpOcc created in database :\n{}", nsLcmOpOcc);
-
- workflowExecutorService.executeWorkflow(nfvoJob.getJobId(), TERMINATE_NS_WORKFLOW_NAME,
- getVariables(nsInstanceId, nfvoJob.getJobId(), nsLcmOpOcc.getId(), terminateNsRequest));
-
- final ImmutableSet<JobStatusEnum> jobFinishedStates =
- ImmutableSet.of(FINISHED, ERROR, FINISHED_WITH_ERROR, IN_PROGRESS);
- final ImmutablePair<String, JobStatusEnum> immutablePair =
- waitForJobToFinish(nfvoJob.getJobId(), jobFinishedStates);
-
- if (immutablePair.getRight() == null) {
- final String message =
- "Failed to Terminate NS with id: " + nsInstanceId + " for request: \n" + terminateNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- final JobStatusEnum finalJobStatus = immutablePair.getRight();
-
- if (IN_PROGRESS.equals(finalJobStatus) || FINISHED.equals(finalJobStatus)) {
- logger.info("Termination Job status: {}", finalJobStatus);
- return nsLcmOpOcc.getId();
- }
-
- final String message = "Received unexpected Job Status: " + finalJobStatus + " Failed to Terminate NS with id: "
- + nsInstanceId + " for request: \n" + terminateNsRequest;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- public void runDeleteNsJob(final String nsInstanceId) {
- final NfvoJob nfvoJob = new NfvoJob().startTime(LocalDateTime.now()).jobType("NS").jobAction(DELETE)
- .resourceId(nsInstanceId).status(STARTING).progress(0);
- databaseServiceProvider.addJob(nfvoJob);
- logger.info("New job created in database :\n{}", nfvoJob);
-
- workflowExecutorService.executeWorkflow(nfvoJob.getJobId(), DELETE_NS_WORKFLOW_NAME,
- getVariables(nsInstanceId, nfvoJob.getJobId()));
-
- final ImmutablePair<String, JobStatusEnum> immutablePair =
- waitForJobToFinish(nfvoJob.getJobId(), JOB_FINISHED_STATES);
-
- if (immutablePair.getRight() == null) {
- final String message = "Failed to Delete NS with id: " + nsInstanceId;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- final JobStatusEnum finalJobStatus = immutablePair.getRight();
- final String processInstanceId = immutablePair.getLeft();
-
- if (FINISHED.equals(finalJobStatus)) {
- logger.info("Delete Job status: {}", finalJobStatus);
- return;
- }
-
- final Optional<InlineResponse400> optional = workflowQueryService.getProblemDetails(processInstanceId);
- if (optional.isPresent()) {
- final InlineResponse400 problemDetails = optional.get();
- final String message = "Failed to Delete NS with id: " + nsInstanceId + " due to:\n" + problemDetails;
- logger.error(message);
- throw new NsRequestProcessingException(message, problemDetails);
- }
-
- final String message =
- "Received unexpected Job Status: " + finalJobStatus + " Failed to Delete NS with id: " + nsInstanceId;
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- private void doInitialTerminateChecks(final String nsInstanceId, final TerminateNsRequest terminateNsRequest) {
- if (isNotImmediateTerminateRequest(terminateNsRequest)) {
- final String message = "TerminateNsRequest received with terminateTime: "
- + terminateNsRequest.getTerminationTime()
- + "\nOnly immediate Terminate requests are currently supported \n(i.e., terminateTime field must not be set).";
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
-
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(nsInstanceId);
- if (isNotInstantiated(nfvoNsInst)) {
- final String message = "TerminateNsRequest received: " + terminateNsRequest + " for nsInstanceId: "
- + nsInstanceId + "\nUnable to terminate. NS Instance is already in NOT_INSTANTIATED state."
- + "\nThis method can only be used with an NS instance in the INSTANTIATED state.";
- logger.error(message);
- throw new NsRequestProcessingException(message);
- }
- }
-
- private boolean isNotImmediateTerminateRequest(final TerminateNsRequest terminateNsRequest) {
- return terminateNsRequest != null && terminateNsRequest.getTerminationTime() != null;
- }
-
- private boolean isNotInstantiated(final NfvoNsInst nfvoNsInst) {
- return State.NOT_INSTANTIATED.equals(nfvoNsInst.getStatus());
- }
-
- private NfvoNsInst getNfvoNsInst(final String nsInstId) {
- logger.info("Getting NfvoNsInst with nsInstId: {}", nsInstId);
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstId);
-
- if (optionalNfvoNsInst.isEmpty()) {
- final String message = "No matching NS Instance for id: " + nsInstId + " found in database.";
- throw new NsRequestProcessingException(message);
- }
-
- return optionalNfvoNsInst.get();
- }
-
- private ImmutablePair<String, JobStatusEnum> waitForJobToFinish(final String jobId,
- final ImmutableSet<JobStatusEnum> jobFinishedStates) {
- try {
- final long startTimeInMillis = System.currentTimeMillis();
- final long timeOutTime = startTimeInMillis + TimeUnit.SECONDS.toMillis(timeOutInSeconds);
-
- logger.info("Will wait till {} for {} job to finish", Instant.ofEpochMilli(timeOutTime).toString(), jobId);
- JobStatusEnum currentJobStatus = null;
- while (timeOutTime > System.currentTimeMillis()) {
-
- final Optional<NfvoJob> optional = databaseServiceProvider.getRefreshedJob(jobId);
-
- if (optional.isEmpty()) {
- logger.error("Unable to find Job using jobId: {}", jobId);
- return ImmutablePair.nullPair();
- }
-
- final NfvoJob nfvoJob = optional.get();
- currentJobStatus = nfvoJob.getStatus();
- logger.debug("Received job status response: \n {}", nfvoJob);
- if (jobFinishedStates.contains(currentJobStatus)) {
- logger.info("Job finished \n {}", currentJobStatus);
- return ImmutablePair.of(nfvoJob.getProcessInstanceId(), currentJobStatus);
- }
-
- logger.info("Haven't received one of finish state {} yet, will try again in {} seconds",
- jobFinishedStates, SLEEP_TIME_IN_SECONDS);
- TimeUnit.SECONDS.sleep(SLEEP_TIME_IN_SECONDS);
-
- }
- logger.warn("Timeout current job status: {}", currentJobStatus);
- return ImmutablePair.nullPair();
- } catch (final InterruptedException interruptedException) {
- Thread.currentThread().interrupt();
- logger.error("Sleep was interrupted", interruptedException);
- return ImmutablePair.nullPair();
- }
- }
-
- private Map<String, Object> getVariables(final String jobId, final CreateNsRequest createNsRequest,
- final String globalCustomerId, final String serviceType) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(JOB_ID_PARAM_NAME, jobId);
- variables.put(CREATE_NS_REQUEST_PARAM_NAME, createNsRequest);
- variables.put(GLOBAL_CUSTOMER_ID_PARAM_NAME, globalCustomerId);
- variables.put(SERVICE_TYPE_PARAM_NAME, serviceType);
- return variables;
- }
-
- private Map<String, Object> getVariables(final String nsInstanceId, final String jobId, final String occId,
- final InstantiateNsRequest instantiateNsRequest) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(NS_INSTANCE_ID_PARAM_NAME, nsInstanceId);
- variables.put(JOB_ID_PARAM_NAME, jobId);
- variables.put(OCC_ID_PARAM_NAME, occId);
- variables.put(INSTANTIATE_NS_REQUEST_PARAM_NAME, instantiateNsRequest);
- return variables;
- }
-
- private Map<String, Object> getVariables(final String nsInstanceId, final String jobId, final String occId,
- final TerminateNsRequest terminateNsRequest) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(NS_INSTANCE_ID_PARAM_NAME, nsInstanceId);
- variables.put(JOB_ID_PARAM_NAME, jobId);
- variables.put(OCC_ID_PARAM_NAME, occId);
- variables.put(TERMINATE_NS_REQUEST_PARAM_NAME, terminateNsRequest);
- return variables;
- }
-
- private Map<String, Object> getVariables(final String nsInstanceId, final String jobId) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(NS_INSTANCE_ID_PARAM_NAME, nsInstanceId);
- variables.put(JOB_ID_PARAM_NAME, jobId);
- return variables;
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowExecutorService.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowExecutorService.java
deleted file mode 100644
index fa2b8d5507..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowExecutorService.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.TENANT_ID;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.Map;
-import org.camunda.bpm.engine.RuntimeService;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class WorkflowExecutorService {
-
- private static final Logger logger = getLogger(WorkflowExecutorService.class);
-
- private final RuntimeService runtimeService;
-
- @Autowired
- public WorkflowExecutorService(final RuntimeService runtimeService) {
- this.runtimeService = runtimeService;
- }
-
- @Async
- public void executeWorkflow(final String jobId, final String processDefinitionKey,
- final Map<String, Object> variables) {
- logger.info("Executing {} workflow with business key: {}", processDefinitionKey, jobId);
- final ProcessInstance processInstance = runtimeService.createProcessInstanceByKey(processDefinitionKey)
- .businessKey(jobId).setVariables(variables).processDefinitionTenantId(TENANT_ID).execute();
-
- logger.info("Workflow running with processInstanceId: {} and business key: {}",
- processInstance.getProcessInstanceId(), processInstance.getBusinessKey());
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowQueryService.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowQueryService.java
deleted file mode 100644
index a6180b0e52..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/service/WorkflowQueryService.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.Constants.TENANT_ID;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.util.Optional;
-import org.camunda.bpm.engine.HistoryService;
-import org.camunda.bpm.engine.ProcessEngineException;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.google.common.base.Strings;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class WorkflowQueryService {
-
- private static final Logger logger = getLogger(WorkflowQueryService.class);
-
- private final HistoryService camundaHistoryService;
-
- @Autowired
- public WorkflowQueryService(final HistoryService camundaHistoryService) {
- this.camundaHistoryService = camundaHistoryService;
- }
-
- public Optional<NsInstancesNsInstance> getCreateNsResponse(final String processInstanceId) {
- try {
-
- if (Strings.isNullOrEmpty(processInstanceId)) {
- logger.error("Invalid processInstanceId: {}", processInstanceId);
- return Optional.empty();
- }
-
- final HistoricVariableInstance historicVariableInstance =
- getVariable(processInstanceId, CREATE_NS_RESPONSE_PARAM_NAME);
-
- if (historicVariableInstance != null) {
- logger.info("Found HistoricVariableInstance : {}", historicVariableInstance);
- final Object variableValue = historicVariableInstance.getValue();
- if (variableValue instanceof NsInstancesNsInstance) {
- return Optional.ofNullable((NsInstancesNsInstance) variableValue);
- }
- logger.error("Unknown CreateNsResponse object type {} received value: {}",
- historicVariableInstance.getValue() != null ? variableValue.getClass() : null, variableValue);
- }
- } catch (final ProcessEngineException processEngineException) {
- logger.error("Unable to find {} variable using processInstanceId: {}", CREATE_NS_RESPONSE_PARAM_NAME,
- processInstanceId, processEngineException);
- }
- logger.error("Unable to find {} variable using processInstanceId: {}", CREATE_NS_RESPONSE_PARAM_NAME,
- processInstanceId);
- return Optional.empty();
-
- }
-
- public Optional<InlineResponse400> getProblemDetails(final String processInstanceId) {
- try {
- final HistoricVariableInstance historicVariableInstance =
- getVariable(processInstanceId, NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME);
-
- logger.info("Found HistoricVariableInstance : {}", historicVariableInstance);
- final Object variableValue = historicVariableInstance.getValue();
- if (variableValue instanceof InlineResponse400) {
- return Optional.ofNullable((InlineResponse400) variableValue);
- }
- logger.error("Unknown ProblemDetails object type {} received value: {}",
- historicVariableInstance.getValue() != null ? variableValue.getClass() : null, variableValue);
- } catch (final ProcessEngineException processEngineException) {
- logger.error("Unable to find {} variable using processInstanceId: {}",
- NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, processInstanceId, processEngineException);
- }
- return Optional.empty();
- }
-
-
- private HistoricVariableInstance getVariable(final String processInstanceId, final String name) {
- return camundaHistoryService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId)
- .variableName(name).tenantIdIn(TENANT_ID).singleResult();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/AbstractNetworkServiceTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/AbstractNetworkServiceTask.java
deleted file mode 100644
index a785a5199b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/AbstractNetworkServiceTask.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.JOB_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.OCC_ID_PARAM_NAME;
-import java.time.LocalDateTime;
-import java.util.Optional;
-import org.camunda.bpm.engine.delegate.BpmnError;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJobStatus;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-public abstract class AbstractNetworkServiceTask {
- private final Logger logger = LoggerFactory.getLogger(getClass());
- protected final DatabaseServiceProvider databaseServiceProvider;
-
- protected AbstractNetworkServiceTask(final DatabaseServiceProvider jobServiceProvider) {
- this.databaseServiceProvider = jobServiceProvider;
- }
-
- public void addJobStatus(final DelegateExecution execution, final JobStatusEnum jobStatus,
- final String description) {
- final NfvoJobStatus nfvoJobStatus =
- new NfvoJobStatus().status(jobStatus).description(description).updatedTime(LocalDateTime.now());
- logger.info("Adding NfvoJobStatus {}", nfvoJobStatus);
- final NfvoJob nfvoJob = getNfvoJob(execution);
- nfvoJob.nfvoJobStatus(nfvoJobStatus);
- databaseServiceProvider.addJob(nfvoJob);
- }
-
- public void setJobStatus(final DelegateExecution execution, final JobStatusEnum jobStatus,
- final String description) {
- logger.info("Setting Job Status to {}", jobStatus);
- final NfvoJob nfvoJob = getNfvoJob(execution);
- nfvoJob.status(jobStatus);
- if (JobStatusEnum.STARTED.equals(jobStatus)) {
- nfvoJob.processInstanceId(execution.getProcessInstanceId());
- }
-
- if (JobStatusEnum.FINISHED.equals(jobStatus)) {
- nfvoJob.endTime(LocalDateTime.now());
- }
-
- nfvoJob.nfvoJobStatus(
- new NfvoJobStatus().status(jobStatus).description(description).updatedTime(LocalDateTime.now()));
- databaseServiceProvider.addJob(nfvoJob);
-
- }
-
- public void setJobStatusToError(final DelegateExecution execution, final String description) {
- logger.info("Setting Job Status to {}", JobStatusEnum.ERROR);
-
- final String jobId = (String) execution.getVariable(JOB_ID_PARAM_NAME);
- final Optional<NfvoJob> optional = databaseServiceProvider.getJob(jobId);
- if (optional.isPresent()) {
- final InlineResponse400 problemDetails =
- (InlineResponse400) execution.getVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME);
-
- final NfvoJob nfvoJob = optional.get();
- nfvoJob.status(JobStatusEnum.ERROR).endTime(LocalDateTime.now());
-
- if (problemDetails != null) {
- logger.error("Found failed reason: {}", problemDetails);
- nfvoJob.nfvoJobStatus(new NfvoJobStatus().status(JobStatusEnum.ERROR)
- .description(problemDetails.getDetail()).updatedTime(LocalDateTime.now()));
- }
- nfvoJob.nfvoJobStatus(new NfvoJobStatus().status(JobStatusEnum.ERROR).description(description)
- .updatedTime(LocalDateTime.now()));
-
- databaseServiceProvider.addJob(nfvoJob);
- }
- logger.info("Finished setting Job Status to {}", JobStatusEnum.ERROR);
-
- }
-
- public void updateNsLcmOpOccStatusToCompleted(final DelegateExecution execution) {
- logger.info("Executing updateNsLcmOpOccStatusToCompleted ...");
-
- updateNsLcmOpOccOperationState(execution, OperationStateEnum.COMPLETED);
-
- logger.info("Finished executing updateNsLcmOpOccStatusToCompleted ...");
-
- }
-
- public void updateNsLcmOpOccStatusToFailed(final DelegateExecution execution) {
- logger.info("Executing updateNsLcmOpOccStatusToFailed ...");
-
- updateNsLcmOpOccOperationState(execution, OperationStateEnum.FAILED);
-
- logger.info("Finished executing updateNsLcmOpOccStatusToFailed ...");
-
- }
-
- protected void abortOperation(final DelegateExecution execution, final String message) {
- abortOperation(execution, message, new InlineResponse400().detail(message));
- }
-
- private void updateNsLcmOpOccOperationState(final DelegateExecution execution,
- final OperationStateEnum operationState) {
- final String occId = (String) execution.getVariable(OCC_ID_PARAM_NAME);
-
- final boolean isSuccessful = databaseServiceProvider.updateNsLcmOpOccOperationState(occId, operationState);
- if (!isSuccessful) {
- final String message =
- "Unable to update NsLcmOpOcc " + occId + " operationState to" + operationState + " in database";
- logger.error(message);
- abortOperation(execution, message);
- }
- }
-
- protected void abortOperation(final DelegateExecution execution, final String message,
- final InlineResponse400 problemDetails) {
- logger.error(message);
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, problemDetails);
- throw new BpmnError("WORKFLOW_FAILED");
- }
-
- private NfvoJob getNfvoJob(final DelegateExecution execution) {
- final String jobId = (String) execution.getVariable(JOB_ID_PARAM_NAME);
- final Optional<NfvoJob> optional = databaseServiceProvider.getJob(jobId);
- if (optional.isEmpty()) {
- final String message = "Unable to find job using job id: " + jobId;
- logger.error(message);
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, new InlineResponse400().detail(message));
- throw new BpmnError("WORKFLOW_FAILED");
-
- }
- return optional.get();
- }
-
- protected void updateNsInstanceStatus(final DelegateExecution execution, final State nsStatus) {
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
-
- logger.info("Updating NfvoNsInst Status to {} and saving to DB", nsStatus);
- databaseServiceProvider.updateNsInstState(nsInstId, nsStatus);
- }
-
- protected NfvoNsInst getNfvoNsInst(final DelegateExecution execution) {
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- return getNfvoNsInst(execution, nsInstId);
- }
-
- protected NfvoNsInst getNfvoNsInst(final DelegateExecution execution, final String nsInstId) {
- logger.info("Getting NfvoNsInst to update with nsInstId: {}", nsInstId);
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstId);
-
- if (optionalNfvoNsInst.isEmpty()) {
- final String message = "Unable to find NS Instance in database using id: " + nsInstId;
- abortOperation(execution, message);
- }
-
- return optionalNfvoNsInst.get();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateRequest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateRequest.java
deleted file mode 100644
index 569d9b3352..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateRequest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.io.Serializable;
-import java.util.Map;
-import java.util.Objects;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class CreateInstantiateRequest implements Serializable {
- private static final long serialVersionUID = -4371264952509580468L;
- private String nsInstId;
- private String vnfdId;
- private String vnfName;
- private String vnfPkgId;
- private String nfType;
- private Tenant tenant;
- private Map<String, String> additionalParams;
-
- public String getNsInstId() {
- return nsInstId;
- }
-
- public void setNsInstId(final String nsInstId) {
- this.nsInstId = nsInstId;
- }
-
- public CreateInstantiateRequest nsInstId(final String nsInstId) {
- this.nsInstId = nsInstId;
- return this;
- }
-
- public final String getVnfdId() {
- return vnfdId;
- }
-
- public final void setVnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public CreateInstantiateRequest vnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- return this;
- }
-
- public final String getVnfName() {
- return vnfName;
- }
-
- public final void setVnfName(final String vnfName) {
- this.vnfName = vnfName;
- }
-
- public CreateInstantiateRequest vnfName(final String vnfName) {
- this.vnfName = vnfName;
- return this;
- }
-
- public final String getVnfPkgId() {
- return vnfPkgId;
- }
-
- public final void setVnfPkgId(final String vnfPkgId) {
- this.vnfPkgId = vnfPkgId;
- }
-
- public CreateInstantiateRequest vnfPkgId(final String vnfPkgId) {
- this.vnfPkgId = vnfPkgId;
- return this;
- }
-
- public final String getNfType() {
- return nfType;
- }
-
- public final void setNfType(final String nfType) {
- this.nfType = nfType;
- }
-
- public CreateInstantiateRequest nfType(final String nfType) {
- this.nfType = nfType;
- return this;
- }
-
- public final Tenant getTenant() {
- return tenant;
- }
-
- public final void setTenant(final Tenant tenant) {
- this.tenant = tenant;
- }
-
- public CreateInstantiateRequest tenant(final Tenant tenant) {
- this.tenant = tenant;
- return this;
- }
-
- public final Map<String, String> getAdditionalParams() {
- return additionalParams;
- }
-
- public final void setAdditionalParams(final Map<String, String> additionalParams) {
- this.additionalParams = additionalParams;
- }
-
- public CreateInstantiateRequest additionalParams(final Map<String, String> additionalParams) {
- this.additionalParams = additionalParams;
- return this;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(nsInstId, vnfdId, vnfName, vnfPkgId, nfType, tenant, additionalParams);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof CreateInstantiateRequest) {
- final CreateInstantiateRequest other = (CreateInstantiateRequest) obj;
- return Objects.equals(nsInstId, other.nsInstId) && Objects.equals(vnfdId, other.vnfdId)
- && Objects.equals(vnfName, other.vnfName) && Objects.equals(vnfPkgId, other.vnfPkgId)
- && Objects.equals(nfType, other.nfType) && Objects.equals(tenant, other.tenant)
- && Objects.equals(additionalParams, other.additionalParams);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class CreateInstantiateRequest {\n");
- sb.append(" nsInstId: ").append(toIndentedString(nsInstId)).append("\n");
- sb.append(" vnfdId: ").append(toIndentedString(vnfdId)).append("\n");
- sb.append(" vnfName: ").append(toIndentedString(vnfName)).append("\n");
- sb.append(" vnfPkgId: ").append(toIndentedString(vnfPkgId)).append("\n");
- sb.append(" nfType: ").append(toIndentedString(nfType)).append("\n");
- sb.append(" tenant: ").append(toIndentedString(tenant)).append("\n");
- sb.append(" additionalParams: ").append(toIndentedString(additionalParams)).append("\n");
-
- sb.append("}");
- return sb.toString();
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateVnfTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateVnfTask.java
deleted file mode 100644
index 0d4cbbe24f..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateVnfTask.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.ERROR;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import java.time.LocalDateTime;
-import java.util.Optional;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-@Component
-public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
- private static final String CREATE_INSTANTIATE_REQUEST_PARAM_NAME = "request";
- private static final Logger logger = LoggerFactory.getLogger(CreateInstantiateVnfTask.class);
- private static final String NF_INST_ID_PARAM_NAME = "NF_INST_ID";
- public static final String CREATE_VNF_RESPONSE_PARAM_NAME = "createVnfResponse";
- private final AaiServiceProvider aaiServiceProvider;
- private final Sol003AdapterServiceProvider sol003AdapterServiceProvider;
-
- @Autowired
- public CreateInstantiateVnfTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider,
- final Sol003AdapterServiceProvider sol003AdapterServiceProvider) {
- super(databaseServiceProvider);
- this.aaiServiceProvider = aaiServiceProvider;
- this.sol003AdapterServiceProvider = sol003AdapterServiceProvider;
- }
-
- public void checkIfNfInstanceExistsInDb(final DelegateExecution execution) {
- logger.info("Executing checkIfNfInstanceInDb");
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
- logger.info("request: {}", request);
-
- addJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Checking if NF Instance record exists in database for "
- + request.getNsInstId() + " and " + request.getVnfName());
- if (!databaseServiceProvider.isNsInstExists(request.getNsInstId(), request.getVnfName())) {
- abortOperation(execution,
- request.getNsInstId() + " " + request.getVnfName() + " VNF instance already exists");
- }
- logger.info("Finished executing checkIfNfInstanceInDb ...");
-
- }
-
- public void createNfInstanceInDb(final DelegateExecution execution) {
- logger.info("Executing createNfInstanceInDb");
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
- logger.info("request: {}", request);
-
- addJobStatus(execution, IN_PROGRESS, "Creating NF Instance record in database for " + request.getVnfName());
-
- final Optional<NfvoNsInst> optional = databaseServiceProvider.getNfvoNsInst(request.getNsInstId());
-
- if (optional.isEmpty()) {
- abortOperation(execution, "NfvoNsInst: " + request.getNsInstId() + "not founda");
- }
-
- final NfvoNsInst nfvoNsInst = optional.get();
- final LocalDateTime now = LocalDateTime.now();
- final NfvoNfInst nfvoNfInst = new NfvoNfInst().status(State.NOT_INSTANTIATED).createTime(now)
- .lastUpdateTime(now).name(request.getVnfName()).vnfdId(request.getVnfdId())
- .packageId(request.getVnfPkgId()).nfvoNsInst(nfvoNsInst);
- databaseServiceProvider.saveNfvoNfInst(nfvoNfInst);
- execution.setVariable(NF_INST_ID_PARAM_NAME, nfvoNfInst.getNfInstId());
- logger.info("Finished executing createNfInstanceInDb ...");
-
- }
-
- public void createGenericVnfInAai(final DelegateExecution execution) {
- logger.info("Executing createGenericVnfInAai");
- try {
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
-
- addJobStatus(execution, IN_PROGRESS, "Creating GenericVnf record in AAI for " + request.getVnfName());
-
- final String nfInstId = (String) execution.getVariable(NF_INST_ID_PARAM_NAME);
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
-
- final GenericVnf genericVnf = new GenericVnf();
- genericVnf.setVnfId(nfInstId);
- genericVnf.setVnfName(request.getVnfName());
- genericVnf.setVnfType(nfvoNsInst.getName() + "/" + request.getVnfName());
- genericVnf.setServiceId(request.getNsInstId());
- genericVnf.setNfType(request.getNfType());
- genericVnf.setOperationalStatus("Created");
- genericVnf.setIsClosedLoopDisabled(false);
-
- aaiServiceProvider.createGenericVnfAndConnectServiceInstance(nsInstId, nfInstId, genericVnf);
-
- final Tenant tenant = request.getTenant();
- aaiServiceProvider.connectGenericVnfToTenant(nfInstId, tenant.getCloudOwner(), tenant.getRegionName(),
- tenant.getTenantId());
-
- } catch (final Exception exception) {
- final String message = "Unable to Create GenericVnf in AAI";
- logger.error(message, exception);
- abortOperation(execution, message);
- }
-
- logger.info("Finished executing createGenericVnfInAai ...");
- }
-
- public void invokeCreateInstantiationRequest(final DelegateExecution execution) {
- logger.info("Executing invokeCreateInstantiationRequest");
-
- try {
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
- logger.info("request: {}", request);
-
- addJobStatus(execution, IN_PROGRESS,
- "Invoking SOL003 adapter for creating and instantiating VNF: " + request.getVnfName());
-
- final CreateVnfRequest vnfRequest = new CreateVnfRequest();
- vnfRequest.setTenant(request.getTenant());
- vnfRequest.setName(request.getVnfName());
- vnfRequest.setPkgId(request.getVnfPkgId());
- vnfRequest.setAdditionalParams(request.getAdditionalParams());
- final String vnfId = (String) execution.getVariable(NF_INST_ID_PARAM_NAME);
- final Optional<CreateVnfResponse> optional =
- sol003AdapterServiceProvider.invokeCreateInstantiationRequest(vnfId, vnfRequest);
-
- if (!optional.isPresent()) {
- final String errorMessage = "Unexpected error while processing create and instantiation request";
- logger.error(errorMessage);
- abortOperation(execution, errorMessage);
- }
-
- final CreateVnfResponse vnfResponse = optional.get();
-
- logger.info("Vnf instantiation response: {}", vnfResponse);
- execution.setVariable(CREATE_VNF_RESPONSE_PARAM_NAME, vnfResponse);
- addJobStatus(execution, IN_PROGRESS, "Successfully invoked SOL003 adapater creating and instantiating VNF: "
- + request.getVnfName() + " CreaetVnfResponse Job Id: " + vnfResponse.getJobId());
- logger.debug("Finished executing invokeCreateInstantiationRequest ...");
- } catch (final Exception exception) {
- final String message = "Unable to invoke create and instantiation request";
- logger.error(message, exception);
- abortOperation(execution, message);
- }
-
- }
-
- public void updateNfInstanceStatusToInstantiated(final DelegateExecution execution) {
- logger.info("Executing updateNfInstanceStatusToInstantiated");
-
- updateNfInstanceStatus(execution, State.INSTANTIATED);
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
- addJobStatus(execution, FINISHED, "Successfully created and Instantiated VNF: " + request.getVnfName()
- + " will set status to " + State.INSTANTIATED);
-
- logger.info("Finished executing updateNfInstanceStatusToInstantiated ...");
-
- }
-
- public void updateNfInstanceStatusToFailed(final DelegateExecution execution) {
- logger.info("Executing updateNfInstanceStatusToFailed");
-
- updateNfInstanceStatus(execution, State.FAILED);
- final CreateInstantiateRequest request =
- (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
- addJobStatus(execution, ERROR, "Failed to create and instantiate VNF: " + request.getVnfName()
- + " will set status to " + State.FAILED);
-
- logger.info("Finished executing updateNfInstanceStatusToFailed ...");
-
- }
-
- private void updateNfInstanceStatus(final DelegateExecution execution, final State vnfStatus) {
- final String nfInstId = (String) execution.getVariable(NF_INST_ID_PARAM_NAME);
- final boolean isSuccessful = databaseServiceProvider.updateNfInstState(nfInstId, vnfStatus);
- if (!isSuccessful) {
- final String message =
- "Unable to update NfvoNfInst " + nfInstId + " status to" + vnfStatus + " in database";
- logger.error(message);
- abortOperation(execution, message);
- }
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateNsTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateNsTask.java
deleted file mode 100644
index 2cf68bee14..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateNsTask.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.CREATE_NS_REQUEST_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.GLOBAL_CUSTOMER_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_PACKAGE_MODEL_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.SERVICE_TYPE_PARAM_NAME;
-import java.time.LocalDateTime;
-import java.util.Optional;
-import java.util.UUID;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.aai.domain.yang.ServiceInstance;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogPackageManagementServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance.NsStateEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-public class CreateNsTask extends AbstractNetworkServiceTask {
- private static final String NETWORK_SERVICE_NAME = "NetworkService";
- private static final String NETWORK_SERVICE_ROLE = "NetworkService";
- private static final String DOES_NS_PACKAGE_EXISTS_PARAM_NAME = "doesNsPackageExists";
- private static final String DOES_NS_INSTANCE_EXISTS_PARAM_NAME = "doesNsInstanceExists";
- private static final Logger logger = LoggerFactory.getLogger(CreateNsTask.class);
- private final EtsiCatalogPackageManagementServiceProvider etsiCatalogPackageManagementServiceProvider;
- private final AaiServiceProvider aaiServiceProvider;
-
- @Autowired
- public CreateNsTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider,
- final EtsiCatalogPackageManagementServiceProvider etsiCatalogPackageManagementServiceProvider) {
- super(databaseServiceProvider);
- this.aaiServiceProvider = aaiServiceProvider;
- this.etsiCatalogPackageManagementServiceProvider = etsiCatalogPackageManagementServiceProvider;
- }
-
- public void setJobStatusToStarted(final DelegateExecution execution) {
- setJobStatus(execution, JobStatusEnum.STARTED, "Create NS workflow process started");
- }
-
- public void setJobStatusToFinished(final DelegateExecution execution) {
- setJobStatus(execution, JobStatusEnum.FINISHED, "Create NS workflow process finished");
- }
-
- public void setJobStatusToError(final DelegateExecution execution) {
- setJobStatusToError(execution, "Create NS workflow process failed");
- }
-
- public void getNsPackage(final DelegateExecution execution) {
- logger.info("Retrieving NS package from ETSI Catalog Manager ...");
- setJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Retrieving NS package from ETSI Catalog Manager");
-
- final CreateNsRequest createNsRequest = (CreateNsRequest) execution.getVariable(CREATE_NS_REQUEST_PARAM_NAME);
-
- try {
- final Optional<NsdInfo> optional =
- etsiCatalogPackageManagementServiceProvider.getNSPackageModel(createNsRequest.getNsdId());
-
- if (optional.isPresent()) {
- final NsdInfo packageModel = optional.get();
- logger.info("NS Package exists {}", packageModel);
- execution.setVariable(NS_PACKAGE_MODEL_PARAM_NAME, packageModel);
- execution.setVariable(DOES_NS_PACKAGE_EXISTS_PARAM_NAME, true);
- } else {
- final String message = "Unable to find NS package using NsdId: " + createNsRequest.getNsdId();
- logger.error(message);
- execution.setVariable(DOES_NS_PACKAGE_EXISTS_PARAM_NAME, false);
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME,
- new InlineResponse400().detail(message));
- }
-
- } catch (final EtsiCatalogManagerRequestFailureException failureException) {
- final String message =
- "Unexpected exception occured while getting ns package using nsdId: " + createNsRequest.getNsdId();
- logger.error(message, failureException);
-
- execution.setVariable(DOES_NS_PACKAGE_EXISTS_PARAM_NAME, false);
-
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME,
- new InlineResponse400().title(message).detail(message));
- }
-
- }
-
- public void doesNsInstanceExistsInDb(final DelegateExecution execution) {
- logger.info("Executing doesNsInstanceExistsInDb ...");
-
- setJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Checking if NS package exists in database");
-
- final CreateNsRequest createNsRequest =
- (CreateNsRequest) execution.getVariables().get(CREATE_NS_REQUEST_PARAM_NAME);
-
- final boolean exists = databaseServiceProvider.isNsInstExists(createNsRequest.getNsName());
- logger.info("Ns Instance entry {} exists in database", exists ? "does" : "doesn't");
- execution.setVariable(DOES_NS_INSTANCE_EXISTS_PARAM_NAME, exists);
-
- if (exists) {
- final Optional<NfvoNsInst> optional =
- databaseServiceProvider.getNfvoNsInstByName(createNsRequest.getNsName());
- final NfvoNsInst nfvoNsInst = optional.get();
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, new InlineResponse400()
- .detail("Ns Instance already exists in database : " + nfvoNsInst.toString()));
- }
-
- logger.info("Finished executing doesNsInstanceExistsInDb ...");
-
- }
-
- public void createNsInstanceInDb(final DelegateExecution execution) {
- logger.info("Executing createNsInstanceInDb ...");
-
- setJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Checking if NS package exists");
-
- final CreateNsRequest createNsRequest = (CreateNsRequest) execution.getVariable(CREATE_NS_REQUEST_PARAM_NAME);
- final NsdInfo packageMode = (NsdInfo) execution.getVariable(NS_PACKAGE_MODEL_PARAM_NAME);
-
- final String globalCustomerId = (String) execution.getVariable(GLOBAL_CUSTOMER_ID_PARAM_NAME);
- final String serviceType = (String) execution.getVariable(SERVICE_TYPE_PARAM_NAME);
-
- final String nsInstId = UUID.randomUUID().toString();
- execution.setVariable(NS_INSTANCE_ID_PARAM_NAME, nsInstId);
-
- databaseServiceProvider.saveNfvoNsInst(new NfvoNsInst().nsInstId(nsInstId).name(createNsRequest.getNsName())
- .nsPackageId(packageMode.getId()).nsdId(packageMode.getNsdId())
- .nsdInvariantId(packageMode.getNsdInvariantId()).description(createNsRequest.getNsDescription())
- .status(State.NOT_INSTANTIATED).statusUpdatedTime(LocalDateTime.now())
- .globalCustomerId(globalCustomerId).serviceType(serviceType));
- logger.info("Finished executing createNsInstanceInDb ...");
-
- }
-
-
- public void createNsInstanceInAai(final DelegateExecution execution) {
- logger.info("Executing createNsInstanceInAai ...");
- try {
- setJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Creating NS Instance in AAI");
-
- final CreateNsRequest createNsRequest =
- (CreateNsRequest) execution.getVariable(CREATE_NS_REQUEST_PARAM_NAME);
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
-
- final String globalCustomerId = (String) execution.getVariable(GLOBAL_CUSTOMER_ID_PARAM_NAME);
- final String serviceType = (String) execution.getVariable(SERVICE_TYPE_PARAM_NAME);
-
- final ServiceInstance aaiServiceInstance = new ServiceInstance();
- aaiServiceInstance.setServiceInstanceId(nsInstId);
- aaiServiceInstance.setServiceInstanceName(createNsRequest.getNsName());
- aaiServiceInstance.setServiceType(NETWORK_SERVICE_NAME);
- aaiServiceInstance.setServiceRole(NETWORK_SERVICE_ROLE);
-
- aaiServiceProvider.createServiceInstance(globalCustomerId, serviceType, aaiServiceInstance);
- } catch (final Exception exception) {
- final String message = "Unable to Create Service Instance in AAI";
- logger.error(message, exception);
- abortOperation(execution, message, new InlineResponse400().detail(message));
- }
- logger.info("Finished executing createNsInstanceInAai ...");
-
- }
-
- public void setCreateNsResponse(final DelegateExecution execution) {
- logger.info("Executing setCreateNsResponse ...");
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final Optional<NfvoNsInst> optional = databaseServiceProvider.getNfvoNsInst(nsInstId);
-
- if (optional.isPresent()) {
- final NfvoNsInst nfvoNsInst = optional.get();
- final NsInstancesNsInstance response = new NsInstancesNsInstance().id(nfvoNsInst.getNsInstId())
- .nsInstanceName(nfvoNsInst.getName()).nsdId(nfvoNsInst.getNsdId())
- .nsdInfoId(nfvoNsInst.getNsPackageId()).nsInstanceDescription(nfvoNsInst.getDescription())
- .nsState(NsStateEnum.fromValue(nfvoNsInst.getStatus().toString()));
- logger.info("Saving CreateNsResponse: {} in Execution ...", response);
- execution.setVariable(CREATE_NS_RESPONSE_PARAM_NAME, response);
- } else {
- final String message = "Unable to find NS Instance in datababse using id: " + nsInstId;
- logger.error(message);
- abortOperation(execution, message);
- }
-
- logger.info("Finished executing setCreateNsResponse ...");
-
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/DeleteNsTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/DeleteNsTask.java
deleted file mode 100644
index cd711fb3e8..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/DeleteNsTask.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import java.util.Optional;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.STARTED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.State.NOT_INSTANTIATED;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Component
-public class DeleteNsTask extends AbstractNetworkServiceTask {
-
- private static final String NS_INSTANCE_EXISTS_PARAM_NAME = "nsInstanceExists";
- private static final String NS_INSTANCE_IS_IN_NOT_INSTANTIATED_STATE_PARAM_NAME = "isInNotInstantiatedState";
- private static final Logger logger = LoggerFactory.getLogger(DeleteNsTask.class);
- private final AaiServiceProvider aaiServiceProvider;
-
- @Autowired
- public DeleteNsTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider) {
- super(databaseServiceProvider);
- this.aaiServiceProvider = aaiServiceProvider;
- }
-
- public void setJobStatusToStarted(final DelegateExecution execution) {
- setJobStatus(execution, STARTED, "Delete NS workflow process started");
- }
-
- public void setJobStatusToFinished(final DelegateExecution execution) {
- setJobStatus(execution, FINISHED, "Delete NS workflow process finished");
- }
-
- public void setJobStatusInProgress(final DelegateExecution execution, final String message) {
- setJobStatus(execution, IN_PROGRESS, message);
- }
-
- public void setJobStatusToError(final DelegateExecution execution) {
- setJobStatusToError(execution, "Delete NS workflow process failed");
- }
-
- public void checkIfNsInstanceExistsInDb(final DelegateExecution execution) {
- logger.info("Executing checkIfNsInstanceExistsInDb ...");
- setJobStatusInProgress(execution, "Checking that NS Instance Exists in DB");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstId);
- final boolean nsInstanceExists = optionalNfvoNsInst.isPresent();
- logger.info("NS Instance entry with id: {} {} exist in database", nsInstId,
- nsInstanceExists ? "does" : "doesn't");
- execution.setVariable(NS_INSTANCE_EXISTS_PARAM_NAME, nsInstanceExists);
-
- if (!nsInstanceExists) {
- final String message =
- "NS Instance with id: " + nsInstId + " does not exist in database, so will not be deleted.";
- logger.info(message);
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, new InlineResponse400().detail(message));
- }
-
- logger.info("Finished executing checkIfNsInstanceExistsInDb ...");
- }
-
- public void checkthatNsInstanceInDbIsInNotInstantiatedState(final DelegateExecution execution) {
- logger.info("Executing checkthatNsInstanceInDbIsInNotInstantiatedState ...");
- setJobStatusInProgress(execution, "Checking that NS Instance is in NOT_INSTANTIATED state in Db");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
- final State nfvoNsInstState = nfvoNsInst.getStatus();
- final boolean nsInstanceIsNotInstantiated = NOT_INSTANTIATED.equals(nfvoNsInstState);
- logger.info("Ns Instance entry with nsInstId: {} is in state: {}", nsInstId, nfvoNsInstState);
- execution.setVariable(NS_INSTANCE_IS_IN_NOT_INSTANTIATED_STATE_PARAM_NAME, nsInstanceIsNotInstantiated);
-
- if (!nsInstanceIsNotInstantiated) {
- final String message =
- "Cannot Delete NS Instance with id: " + nsInstId + " in the state: " + nfvoNsInstState;
- logger.info(message);
- execution.setVariable(NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME, new InlineResponse400().detail(message));
- }
-
- logger.info("Finished executing checkthatNsInstanceInDbIsInNotInstantiatedState ...");
- }
-
- public void deleteNsInstanceFromAai(final DelegateExecution execution) {
- logger.info("Executing deleteNsInstanceFromAAI ...");
- setJobStatusInProgress(execution, "Deleting NS Instance from AAI");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
- final String globalCustomerId = nfvoNsInst.getGlobalCustomerId();
- final String serviceType = nfvoNsInst.getServiceType();
-
- aaiServiceProvider.deleteServiceInstance(globalCustomerId, serviceType, nsInstId);
-
- logger.info("Finished executing deleteNsInstanceFromAAI ...");
- }
-
- public void deleteNsInstanceFromDb(final DelegateExecution execution) {
- logger.info("Executing deleteNsInstanceFromDb ...");
- setJobStatusInProgress(execution, "Deleting NS Instance from Db");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- databaseServiceProvider.deleteNfvoNsInst(nsInstId);
-
- logger.info("Finished executing deleteNsInstanceFromDb ...");
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/InstantiateNsTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/InstantiateNsTask.java
deleted file mode 100644
index a6d35e301e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/InstantiateNsTask.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.INSTANTIATE_NS_REQUEST_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.VNF_CREATE_INSTANTIATE_REQUESTS;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.STARTED;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.commons.lang.StringUtils;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.Tenant;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogPackageManagementServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.VirtualNetworkFunction;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Component
-public class InstantiateNsTask extends AbstractNetworkServiceTask {
-
- private static final String IS_NS_INSTANTIATION_SUCCESSFUL_PARAM_NAME = "isNsInstantiationSuccessful";
- private static final String VNFD_ID_TO_VNF_PKG_ID_MAPPING_PARAM_NAME = "vnfdIdToVnfPkgIdMapping";
- private static final Logger logger = LoggerFactory.getLogger(InstantiateNsTask.class);
- private final EtsiCatalogPackageManagementServiceProvider etsiCatalogPackageManagementServiceProvider;
-
- @Autowired
- public InstantiateNsTask(final DatabaseServiceProvider databaseServiceProvider,
- final EtsiCatalogPackageManagementServiceProvider etsiCatalogPackageManagementServiceProvider) {
- super(databaseServiceProvider);
- this.etsiCatalogPackageManagementServiceProvider = etsiCatalogPackageManagementServiceProvider;
-
- }
-
- public void setJobStatusToStarted(final DelegateExecution execution) {
- setJobStatus(execution, STARTED, "Instantiate NS workflow process started");
- }
-
- public void setJobStatusToFinished(final DelegateExecution execution) {
- setJobStatus(execution, FINISHED, "Instantiate NS workflow process finished");
- }
-
- public void updateNsInstanceStatusToInstantiating(final DelegateExecution execution) {
- logger.info("Executing updateNsInstanceStatusToInstantiating");
- setJobStatus(execution, IN_PROGRESS, "Updating NfvoNsInst Status to " + State.INSTANTIATING);
- updateNsInstanceStatus(execution, State.INSTANTIATING);
-
- logger.info("Finished executing updateNsInstanceStatusToInstantiating ...");
- }
-
-
- public void checkIfVnfInstantiationWasSuccessful(final DelegateExecution execution) {
- logger.info("Executing checkIfVnfInstantiationWasSuccessful");
-
- @SuppressWarnings("unchecked")
- final List<CreateInstantiateRequest> requests =
- (List<CreateInstantiateRequest>) execution.getVariable(VNF_CREATE_INSTANTIATE_REQUESTS);
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final List<NfvoNfInst> nfInstances = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
-
- if (nfInstances == null || nfInstances.isEmpty()) {
- final String message = "Found empty nf instances";
- abortOperation(execution, message);
- }
-
- if (requests.size() != nfInstances.size()) {
- final String message = "Missing nf Instance. Request triggered: " + requests.size()
- + " Nf Instace reqeust found in database " + nfInstances.size();
- abortOperation(execution, message);
- }
-
- execution.setVariable(IS_NS_INSTANTIATION_SUCCESSFUL_PARAM_NAME, true);
-
- nfInstances.stream().forEach(instance -> {
- if (!State.INSTANTIATED.equals(instance.getStatus())) {
- logger.error("VNF : {} {} instantiation failed", instance.getNfInstId(), instance.getName());
- execution.setVariable(IS_NS_INSTANTIATION_SUCCESSFUL_PARAM_NAME, false);
- }
- });
-
- logger.info("Finished executing checkIfVnfInstantiationWasSuccessful ...");
- }
-
- public void updateNsInstanceStatusToInstantiated(final DelegateExecution execution) {
- logger.info("Executing updateNsInstanceStatusToInstantiated");
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- setJobStatus(execution, FINISHED, "Successfully " + State.INSTANTIATED + " NS: " + nsInstId);
-
- updateNsInstanceStatus(execution, State.INSTANTIATED);
- logger.info("Finished executing updateNsInstanceStatusToInstantiated ...");
- }
-
- public void getAndParseNsdFromEtsiCatalog(final DelegateExecution execution) {
- logger.info("Executing getAndParseNsdFromEtsiCatalog");
- setJobStatus(execution, IN_PROGRESS, "Retrieving and parsing NSD from ETSI Catalog Manager");
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution);
- final String nsPackageId = nfvoNsInst.getNsPackageId();
-
- try {
- final Optional<NetworkServiceDescriptor> optional =
- etsiCatalogPackageManagementServiceProvider.getNetworkServiceDescriptor(nsPackageId);
-
- if (optional.isEmpty()) {
- final String message = "Unable to parse NSD " + nsPackageId;
- logger.error(message);
- abortOperation(execution, message);
- }
-
- final NetworkServiceDescriptor networkServiceDescriptor = optional.get();
- logger.info("Found {}", networkServiceDescriptor);
- execution.setVariable(NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME, networkServiceDescriptor);
-
- } catch (final EtsiCatalogManagerRequestFailureException failureException) {
- final String message =
- "Unexpected exception occured while getting nsd content using nsPackageId: " + nsPackageId;
- logger.error(message, failureException);
-
- abortOperation(execution, message);
- }
-
- logger.info("Finished executing getAndParseNsdFromEtsiCatalog ...");
-
- }
-
- public void prepareCreateInstantiateRequests(final DelegateExecution execution) {
- logger.info("Executing prepareCreateInstantiateRequests ...");
- setJobStatus(execution, IN_PROGRESS, "Preparing VNF CreateInstantiate requests");
- final NetworkServiceDescriptor networkServiceDescriptor =
- (NetworkServiceDescriptor) execution.getVariable(NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME);
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
-
- final InstantiateNsRequest instantiateNsRequest =
- (InstantiateNsRequest) execution.getVariable(INSTANTIATE_NS_REQUEST_PARAM_NAME);
-
- final List<NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf> additionalParamsForVnfList =
- instantiateNsRequest.getAdditionalParamsForVnf();
-
- @SuppressWarnings("unchecked")
- final Map<String, String> vnfdIdToVnfPkgIdMapping =
- (Map<String, String>) execution.getVariable(VNFD_ID_TO_VNF_PKG_ID_MAPPING_PARAM_NAME);
-
- final List<CreateInstantiateRequest> requests = new ArrayList<>();
-
- for (final VirtualNetworkFunction vnf : networkServiceDescriptor.getVnfs()) {
- final List<String> vnfmInfoList = vnf.getVnfmInfoList();
-
- final String vnfdId = vnf.getVnfdId();
- final String vnfPkgId = vnfdIdToVnfPkgIdMapping.get(vnfdId);
- if (vnfdId == null || vnfmInfoList.isEmpty() || vnfPkgId == null) {
- final String message = "Unable to find VnfdId/vnfmInfo/VnfPkgId for vnf: " + vnf;
- abortOperation(execution, message);
- }
-
- final Optional<NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf> additionalParamsForVnfOptional =
- getAdditionalParamsForVnf(vnfdId, additionalParamsForVnfList);
-
- if (additionalParamsForVnfOptional.isEmpty()) {
- final String message = "Unable to find AdditionalParamsForVnf for " + vnfdId
- + " in instantiateNsRequest : " + instantiateNsRequest;
- abortOperation(execution, message);
- }
-
- final NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf additionalParamsForVnf =
- additionalParamsForVnfOptional.get();
-
- @SuppressWarnings("unchecked")
- final Map<String, String> additionalParams =
- (Map<String, String>) additionalParamsForVnf.getAdditionalParams();
-
- final Optional<Tenant> optional = getTenant(additionalParams);
- if (optional.isEmpty()) {
- final String message = "Unable to find Tenant information for " + vnfdId + " in instantiateNsRequest : "
- + instantiateNsRequest;
- abortOperation(execution, message);
- }
-
- final String vnfInstanceName = additionalParamsForVnf.getVnfInstanceName();
- final String vnfName = StringUtils.isNotBlank(vnfInstanceName) ? vnfInstanceName
- : nfvoNsInst.getName() + "." + vnf.getVnfName();
-
- final CreateInstantiateRequest createInstantiateRequest =
- new CreateInstantiateRequest().nsInstId(nsInstId).vnfdId(vnfdId).vnfName(vnfName).vnfPkgId(vnfPkgId)
- .nfType(vnfmInfoList.get(0)).tenant(optional.get()).additionalParams(additionalParams);
-
- logger.info("Adding request to list: {}", createInstantiateRequest);
- requests.add(createInstantiateRequest);
-
- }
- execution.setVariable(VNF_CREATE_INSTANTIATE_REQUESTS, requests);
-
- logger.info("Finished executing prepareCreateInstantiateRequests ...");
- }
-
- public void getVnfPkgIdForEachVnfdId(final DelegateExecution execution) {
- logger.info("Executing getVnfPkgIdForEachVnfdId ...");
-
- setJobStatus(execution, IN_PROGRESS, "Getting VnfPkgId for each VnfdId");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
- final String nsPackageId = nfvoNsInst.getNsPackageId();
-
- final Map<String, String> vnfdIdToVnfPkgIdMapping = new HashMap<>();
- try {
- final Optional<NsdInfo> nsdInfoOptional =
- etsiCatalogPackageManagementServiceProvider.getNSPackageModel(nsPackageId);
-
- if (nsdInfoOptional.isEmpty()) {
- final String message = "Unable to find NS package using NS package id: " + nsPackageId;
- logger.error(message);
- abortOperation(execution, message);
- }
-
- final NsdInfo nsdInfo = nsdInfoOptional.get();
- for (final String vnfPkgId : nsdInfo.getVnfPkgIds()) {
- final Optional<VnfPkgInfo> optional =
- etsiCatalogPackageManagementServiceProvider.getVnfPkgInfo(vnfPkgId);
-
- if (optional.isEmpty()) {
- final String message = "Unable to find VNF package using NS vnfPkgId: " + vnfPkgId;
- logger.error(message);
- abortOperation(execution, message);
- }
- final VnfPkgInfo vnfPkgInfo = optional.get();
- vnfdIdToVnfPkgIdMapping.put(vnfPkgInfo.getVnfdId(), vnfPkgId);
-
- }
- logger.info("vnfdIdToVnfPkgIdMapping: {}", vnfdIdToVnfPkgIdMapping);
- execution.setVariable(VNFD_ID_TO_VNF_PKG_ID_MAPPING_PARAM_NAME, vnfdIdToVnfPkgIdMapping);
-
- } catch (final EtsiCatalogManagerRequestFailureException failureException) {
- final String message =
- "Unexpected exception occured while getting VNF package using nsPackageId: " + nsPackageId;
- logger.error(message, failureException);
-
- abortOperation(execution, message);
- }
-
- logger.info("Finished executing getVnfPkgIdForEachVnfdId ...");
-
- }
-
- public void logTimeOut(final DelegateExecution execution) {
- logger.error("Vnf instantiation timedOut ...");
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final List<NfvoNfInst> nfInstances = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
- if (nfInstances != null) {
- nfInstances.stream().forEach(instance -> {
- logger.info("Current status {} of vnf: {}", instance.getStatus(), instance.getName());
- });
- }
- }
-
- public void setJobStatusToError(final DelegateExecution execution) {
- updateNsInstanceStatus(execution, State.FAILED);
- setJobStatusToError(execution, "Instantiate NS workflow process failed");
- }
-
- private Optional<Tenant> getTenant(final Map<String, String> additionalParams) {
- final String vimId = additionalParams.get("vim_id");
- if (vimId != null) {
- final String[] splitString = vimId.split("_");
- if (splitString.length == 3) {
- logger.info("Found Tenant in additionalParams: {}", additionalParams);
- return Optional.of(
- new Tenant().cloudOwner(splitString[0]).regionName(splitString[1]).tenantId(splitString[2]));
- }
-
- }
- logger.error("Unable to find Tenant in additionalParams: {}", additionalParams);
- return Optional.empty();
- }
-
- private Optional<NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf> getAdditionalParamsForVnf(
- final String vnfdId,
- final List<NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf> additionalParamsForVnfList) {
- final Optional<NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf> optional =
- additionalParamsForVnfList.stream().filter(entry -> vnfdId.equals(entry.getVnfProfileId())).findFirst();
- if (optional.isPresent()) {
- logger.info("Found AdditionalParamsForVnf in instantiateNsRequest using vnfdId: {}", vnfdId);
-
- }
- return optional;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorInstantiateSol003AdapterNodeTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorInstantiateSol003AdapterNodeTask.java
deleted file mode 100644
index 51fa6b9381..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorInstantiateSol003AdapterNodeTask.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-public class MonitorInstantiateSol003AdapterNodeTask extends MonitorSol003AdapterNodeTask {
- public static final String CREATE_VNF_NODE_STATUS = "createVnfNodeStatus";
- public static final String VNF_CREATED = "Created";
-
- @Autowired
- public MonitorInstantiateSol003AdapterNodeTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider) {
- super(databaseServiceProvider, aaiServiceProvider);
- }
-
- @Override
- public String getNodeStatusVariableName() {
- return CREATE_VNF_NODE_STATUS;
- }
-
- @Override
- public boolean isOrchestrationStatusValid(final String orchestrationStatus) {
- return VNF_CREATED.equalsIgnoreCase(orchestrationStatus);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterCreateJobTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterCreateJobTask.java
deleted file mode 100644
index 3c91598dfb..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterCreateJobTask.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.CREATE_VNF_RESPONSE_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-public class MonitorSol003AdapterCreateJobTask extends MonitorSol003AdapterJobTask {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(MonitorSol003AdapterCreateJobTask.class);
-
- @Autowired
- public MonitorSol003AdapterCreateJobTask(final Sol003AdapterServiceProvider sol003AdapterServiceProvider,
- final DatabaseServiceProvider databaseServiceProvider) {
- super(sol003AdapterServiceProvider, databaseServiceProvider);
- }
-
- public void getCurrentOperationStatus(final DelegateExecution execution) {
- try {
- LOGGER.debug("Executing getCurrentOperationStatus ...");
- final CreateVnfResponse vnfInstantiateResponse =
- (CreateVnfResponse) execution.getVariable(CREATE_VNF_RESPONSE_PARAM_NAME);
- execution.setVariable(OPERATION_STATUS_PARAM_NAME,
- getOperationStatus(execution, vnfInstantiateResponse.getJobId()));
- LOGGER.debug("Finished executing getCurrentOperationStatus ...");
- } catch (final Exception exception) {
- final String message = "Unable to invoke get current Operation status";
- LOGGER.error(message, exception);
- abortOperation(execution, message);
-
- }
- }
-
- /**
- * Log and throw exception on timeout for job status
- *
- * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl}
- */
- public void timeOutLogFailue(final DelegateExecution execution) {
- final String message = "Instantiation operation time out";
- LOGGER.error(message);
- abortOperation(execution, message);
- }
-
- /**
- * Check the final status of instantiation throw exception if not completed successfully
- *
- * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl}
- */
- public void checkIfOperationWasSuccessful(final DelegateExecution execution) {
- LOGGER.debug("Executing checkIfOperationWasSuccessful ...");
- final OperationStateEnum operationStatus =
- (OperationStateEnum) execution.getVariable(OPERATION_STATUS_PARAM_NAME);
- final CreateVnfResponse vnfInstantiateResponse =
- (CreateVnfResponse) execution.getVariable(CREATE_VNF_RESPONSE_PARAM_NAME);
-
- if (operationStatus == null) {
- final String message = "Unable to instantiate jobId: "
- + (vnfInstantiateResponse != null ? vnfInstantiateResponse.getJobId() : "null")
- + "Unable to retrieve OperationStatus";
- LOGGER.error(message);
- abortOperation(execution, message);
- }
- if (operationStatus != OperationStateEnum.COMPLETED) {
- final String message = "Unable to instantiate jobId: "
- + (vnfInstantiateResponse != null ? vnfInstantiateResponse.getJobId() : "null")
- + " OperationStatus: " + operationStatus;
- LOGGER.error(message);
- abortOperation(execution, message);
- }
-
- LOGGER.debug("Successfully completed instatiation of job {}", vnfInstantiateResponse);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterJobTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterJobTask.java
deleted file mode 100644
index bac79dfa3e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterJobTask.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME;
-import java.util.Optional;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Component
-public class MonitorSol003AdapterJobTask extends AbstractNetworkServiceTask {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(MonitorSol003AdapterJobTask.class);
- public static final ImmutableSet<OperationStateEnum> OPERATION_FINISHED_STATES =
- ImmutableSet.of(OperationStateEnum.COMPLETED, OperationStateEnum.FAILED, OperationStateEnum.ROLLED_BACK);
- public static final ImmutableSet<OperationStatusRetrievalStatusEnum> OPERATION_RETRIEVAL_STATES = ImmutableSet
- .of(OperationStatusRetrievalStatusEnum.STATUS_FOUND, OperationStatusRetrievalStatusEnum.WAITING_FOR_STATUS);
- protected final Sol003AdapterServiceProvider sol003AdapterServiceProvider;
-
- @Autowired
- public MonitorSol003AdapterJobTask(final Sol003AdapterServiceProvider sol003AdapterServiceProvider,
- final DatabaseServiceProvider databaseServiceProvider) {
- super(databaseServiceProvider);
- this.sol003AdapterServiceProvider = sol003AdapterServiceProvider;
- }
-
- public boolean hasOperationFinished(final DelegateExecution execution) {
- LOGGER.debug("Executing hasOperationFinished ...");
-
- final OperationStateEnum operationStatus =
- (OperationStateEnum) execution.getVariable(OPERATION_STATUS_PARAM_NAME);
- if (operationStatus != null) {
- return OPERATION_FINISHED_STATES.contains(operationStatus);
- }
- LOGGER.debug("OperationStatus is not present yet... ");
- LOGGER.debug("Finished executing hasOperationFinished ...");
- return false;
- }
-
- protected OperationStateEnum getOperationStatus(final DelegateExecution execution, final String jobId) {
-
- final Optional<QueryJobResponse> instantiateOperationJobStatus =
- sol003AdapterServiceProvider.getInstantiateOperationJobStatus(jobId);
-
- if (instantiateOperationJobStatus.isPresent()) {
- final QueryJobResponse queryJobResponse = instantiateOperationJobStatus.get();
-
- if (!OPERATION_RETRIEVAL_STATES.contains(queryJobResponse.getOperationStatusRetrievalStatus())) {
- final String message = "Received invalid operation retrieval state: "
- + queryJobResponse.getOperationStatusRetrievalStatus();
- LOGGER.error(message);
- abortOperation(execution, message);
- }
- if (queryJobResponse.getOperationState() != null) {
- final OperationStateEnum operationStatus = queryJobResponse.getOperationState();
- LOGGER.debug("Operation {} with {} and operation retrieval status : {}", queryJobResponse.getId(),
- operationStatus, queryJobResponse.getOperationStatusRetrievalStatus());
- return queryJobResponse.getOperationState();
- }
-
- LOGGER.debug("Operation {} without operationStatus and operation retrieval status :{}",
- queryJobResponse.getId(), queryJobResponse.getOperationStatusRetrievalStatus());
- }
- return null;
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterNodeTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterNodeTask.java
deleted file mode 100644
index 001c369801..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterNodeTask.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NF_INST_ID_PARAM_NAME;
-import java.util.Optional;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.aai.domain.yang.GenericVnf;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public abstract class MonitorSol003AdapterNodeTask extends AbstractNetworkServiceTask {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(MonitorSol003AdapterNodeTask.class);
- private final AaiServiceProvider aaiServiceProvider;
-
- protected MonitorSol003AdapterNodeTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider) {
- super(databaseServiceProvider);
- this.aaiServiceProvider = aaiServiceProvider;
- }
-
- /**
- * Check the final status of vnf in A&AI
- *
- * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl}
- */
- public void getNodeStatus(final DelegateExecution execution) {
- try {
- LOGGER.debug("Executing getNodeStatus ...");
- final String vnfId = (String) execution.getVariable(NF_INST_ID_PARAM_NAME);
-
- LOGGER.debug("Query A&AI for generic VNF using vnfID: {}", vnfId);
- final Optional<GenericVnf> aaiGenericVnfOptional = aaiServiceProvider.getGenericVnf(vnfId);
-
- if (aaiGenericVnfOptional.isEmpty()) {
- abortOperation(execution, "Unable to find generic vnf in A&AI using vnfId" + vnfId);
- }
- final GenericVnf genericVnf = aaiGenericVnfOptional.get();
- final String orchestrationStatus = genericVnf.getOrchestrationStatus();
- LOGGER.debug("Found generic vnf with orchestration status : {}", orchestrationStatus);
-
- execution.setVariable(getNodeStatusVariableName(), isOrchestrationStatusValid(orchestrationStatus));
-
- } catch (final Exception exception) {
- LOGGER.error("Unable to get vnf from AAI", exception);
- abortOperation(execution, "Unable to get vnf from AAI");
- }
- }
-
- /**
- * Get variable to store in execution context
- *
- * @return the variable name
- */
- public abstract String getNodeStatusVariableName();
-
- /**
- * @param orchestrationStatus the orchestration status from A&AI
- * @return true if valid
- */
- public abstract boolean isOrchestrationStatusValid(final String orchestrationStatus);
-
- public void timeOutLogFailue(final DelegateExecution execution) {
- final String message = "Node operation time out";
- LOGGER.error(message);
- abortOperation(execution, message);
- }
-
- AaiServiceProvider getAaiServiceProvider() {
- return aaiServiceProvider;
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateJobTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateJobTask.java
deleted file mode 100644
index d85444497d..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateJobTask.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.DELETE_VNF_RESPONSE_PARAM_NAME;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Component
-public class MonitorSol003AdapterTerminateJobTask extends MonitorSol003AdapterJobTask {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(MonitorSol003AdapterTerminateJobTask.class);
-
- @Autowired
- public MonitorSol003AdapterTerminateJobTask(final Sol003AdapterServiceProvider sol003AdapterServiceProvider,
- final DatabaseServiceProvider databaseServiceProvider) {
- super(sol003AdapterServiceProvider, databaseServiceProvider);
- }
-
- public void getCurrentOperationStatus(final DelegateExecution execution) {
- try {
- LOGGER.debug("Executing getCurrentOperationStatus ...");
- final DeleteVnfResponse deleteVnfResponse =
- (DeleteVnfResponse) execution.getVariable(DELETE_VNF_RESPONSE_PARAM_NAME);
- execution.setVariable(OPERATION_STATUS_PARAM_NAME,
- getOperationStatus(execution, deleteVnfResponse.getJobId()));
- LOGGER.debug("Finished executing getCurrentOperationStatus ...");
- } catch (final Exception exception) {
- final String message = "Unable to invoke get current Operation status";
- LOGGER.error(message, exception);
- abortOperation(execution, message);
-
- }
- }
-
- /**
- * Log and throw exception on timeout for job status
- *
- * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl}
- */
- public void timeOutLogFailure(final DelegateExecution execution) {
- final String message = "Termination operation time out";
- LOGGER.error(message);
- abortOperation(execution, message);
- }
-
- /**
- * Check the final status of termination throw exception if not completed successfully
- *
- * @param execution {@link org.onap.so.bpmn.common.DelegateExecutionImpl}
- */
- public void checkIfOperationWasSuccessful(final DelegateExecution execution) {
- LOGGER.debug("Executing checkIfOperationWasSuccessful ...");
- final OperationStateEnum operationStatus =
- (OperationStateEnum) execution.getVariable(OPERATION_STATUS_PARAM_NAME);
- final DeleteVnfResponse deleteVnfResponse =
- (DeleteVnfResponse) execution.getVariable(DELETE_VNF_RESPONSE_PARAM_NAME);
-
- if (operationStatus == null) {
- final String message =
- "Unable to terminate, jobId: " + (deleteVnfResponse != null ? deleteVnfResponse.getJobId() : "null")
- + "Unable to retrieve OperationStatus";
- LOGGER.error(message);
- abortOperation(execution, message);
- }
- if (operationStatus != OperationStateEnum.COMPLETED) {
- final String message =
- "Unable to terminate, jobId: " + (deleteVnfResponse != null ? deleteVnfResponse.getJobId() : "null")
- + " OperationStatus: " + operationStatus;
- LOGGER.error(message);
- abortOperation(execution, message);
- }
-
- LOGGER.debug("Successfully completed termination of job {}", deleteVnfResponse);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateNodeTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateNodeTask.java
deleted file mode 100644
index f38bdba71b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/MonitorSol003AdapterTerminateNodeTask.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Component
-public class MonitorSol003AdapterTerminateNodeTask extends MonitorSol003AdapterNodeTask {
-
- public static final String DELETE_VNF_NODE_STATUS = "deleteVnfNodeStatus";
- public static final String VNF_ASSIGNED = "Assigned";
-
- @Autowired
- public MonitorSol003AdapterTerminateNodeTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider) {
- super(databaseServiceProvider, aaiServiceProvider);
- }
-
- @Override
- public String getNodeStatusVariableName() {
- return DELETE_VNF_NODE_STATUS;
- }
-
- @Override
- public boolean isOrchestrationStatusValid(final String orchestrationStatus) {
- return VNF_ASSIGNED.equalsIgnoreCase(orchestrationStatus);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateNsTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateNsTask.java
deleted file mode 100644
index c0d1df8c50..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateNsTask.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import java.util.ArrayList;
-import java.util.List;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NS_INSTANCE_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.STARTED;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Component
-public class TerminateNsTask extends AbstractNetworkServiceTask {
-
- private static final String IS_NS_TERMINATION_SUCCESSFUL_PARAM_NAME = "isNsTerminationSuccessful";
- private static final Logger logger = LoggerFactory.getLogger(TerminateNsTask.class);
-
- @Autowired
- public TerminateNsTask(final DatabaseServiceProvider databaseServiceProvider) {
- super(databaseServiceProvider);
- }
-
- public void setJobStatusToStarted(final DelegateExecution execution) {
- setJobStatus(execution, STARTED, "Terminate NS workflow process started");
- }
-
- public void setJobStatusToFinished(final DelegateExecution execution) {
- setJobStatus(execution, FINISHED, "Terminate NS workflow process finished");
- }
-
- public void setJobStatusToError(final DelegateExecution execution) {
- updateNsInstanceStatus(execution, State.FAILED);
- setJobStatusToError(execution, "Terminate NS workflow process failed");
- }
-
- public void updateNsInstanceStatusToTerminating(final DelegateExecution execution) {
- logger.info("Executing updateNsInstanceStatusToTerminating");
- setJobStatus(execution, IN_PROGRESS, "Updating NfvoNsInst Status to " + State.TERMINATING);
- updateNsInstanceStatus(execution, State.TERMINATING);
- logger.info("Finished executing updateNsInstanceStatusToTerminating ...");
- }
-
- public void updateNsInstanceStatusToNotInstantiated(final DelegateExecution execution) {
- logger.info("Executing updateNsInstanceStatusToNotInstantiated");
- setJobStatus(execution, IN_PROGRESS, "Updating NfvoNsInst Status to " + State.NOT_INSTANTIATED);
- updateNsInstanceStatus(execution, State.NOT_INSTANTIATED);
- logger.info("Finished executing updateNsInstanceStatusToNotInstantiated ...");
- }
-
- public void getVnfIdsInNs(final DelegateExecution execution) {
- logger.info("Executing getVnfIdsInNs ...");
- setJobStatus(execution, IN_PROGRESS, "Getting Each VnfId In Ns");
- final List<String> nfvoNfInstIds = getNfvoNfInstIds(execution);
- execution.setVariable(CamundaVariableNameConstants.NFVO_NF_INST_IDS_PARAM_NAME, nfvoNfInstIds);
- logger.info("Finished executing getVnfIdsInNs ...");
- }
-
- public void checkIfVnfTerminationWasSuccessful(final DelegateExecution execution) {
- logger.info("Executing checkIfVnfTerminationWasSuccessful");
-
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final List<NfvoNfInst> nfInstances = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
-
- if ((nfInstances != null) && !(nfInstances.isEmpty())) {
- final String message = "Found NF Instances";
- nfInstances.stream().forEach(instance -> {
- logger.error("VNF : {} {} termination failed", instance.getNfInstId(), instance.getName());
- execution.setVariable(IS_NS_TERMINATION_SUCCESSFUL_PARAM_NAME, false);
- });
- abortOperation(execution, message);
- }
-
- execution.setVariable(IS_NS_TERMINATION_SUCCESSFUL_PARAM_NAME, true);
- logger.info("Finished executing checkIfVnfTerminationWasSuccessful");
- }
-
- public void logTimeOut(final DelegateExecution execution) {
- logger.error("Vnf termination timedOut ...");
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- final List<NfvoNfInst> nfInstances = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
- if (nfInstances != null) {
- nfInstances.stream().forEach(
- instance -> logger.info("Current status {} of vnf: {}", instance.getStatus(), instance.getName()));
- }
- }
-
- private List<String> getNfvoNfInstIds(final DelegateExecution execution) {
- final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
- logger.info("Getting NfvoNfInstList using nsInstId: {}", nsInstId);
- final List<NfvoNfInst> nfvoNfInstList = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
-
- if (nfvoNfInstList == null || nfvoNfInstList.isEmpty()) {
- final String message = "Unable to find NF Instances in database using id: " + nsInstId;
- abortOperation(execution, message);
- }
-
- final List<String> vnfIdsList = new ArrayList<>();
-
- nfvoNfInstList.stream().forEach(nfvoNfInst -> vnfIdsList.add(nfvoNfInst.getNfInstId()));
-
- return vnfIdsList;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateVnfTask.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateVnfTask.java
deleted file mode 100644
index f3e7eea212..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateVnfTask.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.DELETE_VNF_RESPONSE_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NF_INST_ID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.TERMINATE_VNF_VNFID_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.ERROR;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.FINISHED;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum.IN_PROGRESS;
-import java.util.Optional;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- */
-@Component
-public class TerminateVnfTask extends AbstractNetworkServiceTask {
- private static final Logger logger = LoggerFactory.getLogger(TerminateVnfTask.class);
- private final AaiServiceProvider aaiServiceProvider;
- private final Sol003AdapterServiceProvider sol003AdapterServiceProvider;
-
- @Autowired
- public TerminateVnfTask(final DatabaseServiceProvider databaseServiceProvider,
- final AaiServiceProvider aaiServiceProvider,
- final Sol003AdapterServiceProvider sol003AdapterServiceProvider) {
- super(databaseServiceProvider);
- this.aaiServiceProvider = aaiServiceProvider;
- this.sol003AdapterServiceProvider = sol003AdapterServiceProvider;
- }
-
- public void checkIfNfInstanceExistsInDb(final DelegateExecution execution) {
- logger.info("Executing checkIfNfInstanceInDb");
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
- logger.info("vnfId: {}", vnfId);
- execution.setVariable(NF_INST_ID_PARAM_NAME, vnfId);
-
- addJobStatus(execution, JobStatusEnum.IN_PROGRESS,
- "Checking if VNF Instance with id: " + vnfId + " exists in database.");
- if (!databaseServiceProvider.isNfInstExists(vnfId)) {
- abortOperation(execution,
- "VNF instance with id: " + vnfId + " does not exist in database, so will not be terminated.");
- }
- logger.info("Finished executing checkIfNfInstanceInDb ...");
-
- }
-
- public void invokeTerminateRequest(final DelegateExecution execution) {
- logger.info("Executing invokeTerminateRequest");
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
-
- try {
- addJobStatus(execution, IN_PROGRESS, "Invoking SOL003 adapter for terminating VNF with vnfId: " + vnfId);
-
- final Optional<DeleteVnfResponse> optional = sol003AdapterServiceProvider.invokeTerminationRequest(vnfId);
-
- if (optional.isEmpty()) {
- final String errorMessage = "Unexpected error while processing terminate request for vnfId: " + vnfId;
- logger.error(errorMessage);
- abortOperation(execution, errorMessage);
- }
-
- final DeleteVnfResponse vnfResponse = optional.get();
-
- logger.info("Vnf delete response: {}", vnfResponse);
- execution.setVariable(DELETE_VNF_RESPONSE_PARAM_NAME, vnfResponse);
- addJobStatus(execution, IN_PROGRESS, "Successfully invoked SOL003 adapter terminate VNF with vnfId: "
- + vnfId + " DeleteVnfResponse Job Id: " + vnfResponse.getJobId());
- logger.debug("Finished executing invokeTerminateRequest ...");
- } catch (final Exception exception) {
- final String message = "Unable to invoke terminate request for vnfId: " + vnfId;
- logger.error(message, exception);
- abortOperation(execution, message);
- }
-
- }
-
- public void deleteGenericVnfFromAai(final DelegateExecution execution) {
- logger.info("Executing deleteGenericVnfFromAai");
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
-
- try {
- addJobStatus(execution, IN_PROGRESS, "Deleting GenericVnf record from AAI for vnfId: " + vnfId);
- aaiServiceProvider.deleteGenericVnf(vnfId);
-
- } catch (final Exception exception) {
- final String message = "Unable to Delete GenericVnf from AAI for vnfId: " + vnfId;
- logger.error(message, exception);
- abortOperation(execution, message);
- }
-
- logger.info("Finished executing deleteGenericVnfFromAai ...");
- }
-
- public void deleteNfInstanceFromDb(final DelegateExecution execution) {
- logger.info("Executing deleteNfInstanceFromDb");
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
-
- addJobStatus(execution, IN_PROGRESS, "Deleting NF Instance record from Database for vnfId: " + vnfId);
- databaseServiceProvider.deleteNfvoNfInst(vnfId);
-
- addJobStatus(execution, FINISHED, "Successfully finished terminating VNF with vnfId: " + vnfId);
- logger.info("Finished executing deleteNfInstanceFromDb ...");
- }
-
- public void updateNfInstanceStatusToTerminating(final DelegateExecution execution) {
- logger.info("Executing updateNfInstanceStatusToTerminating");
-
- updateNfInstanceStatus(execution, State.TERMINATING);
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
- addJobStatus(execution, IN_PROGRESS,
- "Terminating VNF with vnfId: " + vnfId + " will set status to " + State.TERMINATING);
-
- logger.info("Finished executing updateNfInstanceStatusToTerminating ...");
-
- }
-
- public void updateNfInstanceStatusToNotInstantiated(final DelegateExecution execution) {
- logger.info("Executing updateNfInstanceStatusToNotInstantiated");
-
- updateNfInstanceStatus(execution, State.NOT_INSTANTIATED);
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
- addJobStatus(execution, IN_PROGRESS,
- "Successfully terminated VNF with vnfId: " + vnfId + " will set status to " + State.NOT_INSTANTIATED);
-
- logger.info("Finished executing updateNfInstanceStatusToInstantiated ...");
-
- }
-
- public void updateNfInstanceStatusToFailed(final DelegateExecution execution) {
- logger.info("Executing updateNfInstanceStatusToFailed");
-
- updateNfInstanceStatus(execution, State.FAILED);
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
- addJobStatus(execution, ERROR,
- "Failed to terminate VNF with vnfId: " + vnfId + " will set status to " + State.FAILED);
-
- logger.info("Finished executing updateNfInstanceStatusToFailed ...");
-
- }
-
- private void updateNfInstanceStatus(final DelegateExecution execution, final State vnfStatus) {
- final String vnfId = (String) execution.getVariable(TERMINATE_VNF_VNFID_PARAM_NAME);
-
- final boolean isSuccessful = databaseServiceProvider.updateNfInstState(vnfId, vnfStatus);
- if (!isSuccessful) {
- final String message = "Unable to update NfvoNfInst " + vnfId + " status to" + vnfStatus + " in database";
- logger.error(message);
- abortOperation(execution, message);
- }
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/utils/LocalDateTimeTypeAdapter.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/utils/LocalDateTimeTypeAdapter.java
deleted file mode 100644
index 9f21d2b449..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/utils/LocalDateTimeTypeAdapter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.utils;
-
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import com.google.gson.TypeAdapter;
-import com.google.gson.stream.JsonReader;
-import com.google.gson.stream.JsonToken;
-import com.google.gson.stream.JsonWriter;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
-
- private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
- @Override
- public void write(final JsonWriter out, final LocalDateTime localDateTime) throws IOException {
- if (localDateTime == null) {
- out.nullValue();
- } else {
- out.value(FORMATTER.format(localDateTime));
- }
- }
-
- @Override
- public LocalDateTime read(final JsonReader in) throws IOException {
- if (JsonToken.NULL == in.peek()) {
- in.nextNull();
- return null;
-
- }
- final String dateTime = in.nextString();
- return LocalDateTime.parse(dateTime, FORMATTER);
-
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateInstantiateVnf.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateInstantiateVnf.bpmn
deleted file mode 100644
index 025faa4128..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateInstantiateVnf.bpmn
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1uf6nd9" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
- <bpmn:process id="CreateInstantiateVnf" name="CreateInstantiateVnf" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>Flow_02bjz2v</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:serviceTask id="Activity_19rmtjr" name="Create NF Instance (VNF) record in DB" camunda:expression="${CreateInstantiateVnfTask.createNfInstanceInDb(execution)}">
- <bpmn:incoming>Flow_123uagz</bpmn:incoming>
- <bpmn:outgoing>Flow_03p6ifi</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_02bjz2v" sourceRef="StartEvent_1" targetRef="Activity_1cluqgp" />
- <bpmn:endEvent id="Event_14qdixj">
- <bpmn:incoming>Flow_0srinh7</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_03p6ifi" sourceRef="Activity_19rmtjr" targetRef="Activity_0rto3n3" />
- <bpmn:serviceTask id="Activity_0rto3n3" name="Create Generic VNF and Connect to Service Instance in AAI" camunda:expression="${CreateInstantiateVnfTask.createGenericVnfInAai(execution)}">
- <bpmn:incoming>Flow_03p6ifi</bpmn:incoming>
- <bpmn:outgoing>Flow_1c3kc4e</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1c3kc4e" sourceRef="Activity_0rto3n3" targetRef="ServiceTask_0iry5yw" />
- <bpmn:serviceTask id="Activity_1cluqgp" name="Check If NF Instance (VNF) exists in DB" camunda:expression="${CreateInstantiateVnfTask.checkIfNfInstanceExistsInDb(execution)}">
- <bpmn:incoming>Flow_02bjz2v</bpmn:incoming>
- <bpmn:outgoing>Flow_123uagz</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_123uagz" sourceRef="Activity_1cluqgp" targetRef="Activity_19rmtjr" />
- <bpmn:serviceTask id="ServiceTask_0iry5yw" name="&#10;Invoke VNFM Adaptor&#10;" camunda:asyncAfter="true" camunda:expression="${CreateInstantiateVnfTask.invokeCreateInstantiationRequest(execution)}">
- <bpmn:incoming>Flow_1c3kc4e</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0xzptc2</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:callActivity id="CallActivity_1yilxx3" name="Monitor Sol003 adapter Instantiation Job" calledElement="MonitorSol003AdapterCreateJob">
- <bpmn:extensionElements>
- <camunda:in source="createVnfResponse" target="createVnfResponse" />
- <camunda:in source="jobId" target="jobId" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_0xzptc2</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_053tvct</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:callActivity id="CallActivity_0p84lpt" name="Monitor Sol003 adapter Create Node Status" calledElement="MonitorSol003AdapterCreateNodeStatus">
- <bpmn:extensionElements>
- <camunda:in source="NF_INST_ID" target="NF_INST_ID" />
- <camunda:in source="createVnfResponse" target="createVnfResponse" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_053tvct</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0h7yluk</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:sequenceFlow id="SequenceFlow_0xzptc2" sourceRef="ServiceTask_0iry5yw" targetRef="CallActivity_1yilxx3" />
- <bpmn:sequenceFlow id="SequenceFlow_053tvct" sourceRef="CallActivity_1yilxx3" targetRef="CallActivity_0p84lpt" />
- <bpmn:sequenceFlow id="SequenceFlow_0h7yluk" sourceRef="CallActivity_0p84lpt" targetRef="Activity_0g3dip7" />
- <bpmn:serviceTask id="Activity_0g3dip7" name="Update NF Instance (VNF) Status to INSTANTIATED" camunda:expression="${CreateInstantiateVnfTask.updateNfInstanceStatusToInstantiated(execution)}">
- <bpmn:incoming>SequenceFlow_0h7yluk</bpmn:incoming>
- <bpmn:outgoing>Flow_0srinh7</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0srinh7" sourceRef="Activity_0g3dip7" targetRef="Event_14qdixj" />
- <bpmn:subProcess id="Activity_0qtgdm9" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_08zcwc2" name="error">
- <bpmn:outgoing>Flow_06q1m6i</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1ppvn77" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_1wkm29u" name="end">
- <bpmn:incoming>Flow_0anjylz</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_0ltxcii" name="Update NF Instance (VNF) Status to FAILED" camunda:asyncBefore="true" camunda:expression="${CreateInstantiateVnfTask.updateNfInstanceStatusToFailed(execution)}">
- <bpmn:incoming>Flow_06q1m6i</bpmn:incoming>
- <bpmn:outgoing>Flow_0anjylz</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_06q1m6i" sourceRef="Event_08zcwc2" targetRef="Activity_0ltxcii" />
- <bpmn:sequenceFlow id="Flow_0anjylz" sourceRef="Activity_0ltxcii" targetRef="Event_1wkm29u" />
- </bpmn:subProcess>
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateInstantiateVnf">
- <bpmndi:BPMNEdge id="SequenceFlow_0h7yluk_di" bpmnElement="SequenceFlow_0h7yluk">
- <di:waypoint x="1030" y="117" />
- <di:waypoint x="1080" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_053tvct_di" bpmnElement="SequenceFlow_053tvct">
- <di:waypoint x="880" y="117" />
- <di:waypoint x="930" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0xzptc2_di" bpmnElement="SequenceFlow_0xzptc2">
- <di:waypoint x="740" y="117" />
- <di:waypoint x="780" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_123uagz_di" bpmnElement="Flow_123uagz">
- <di:waypoint x="350" y="117" />
- <di:waypoint x="380" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1c3kc4e_di" bpmnElement="Flow_1c3kc4e">
- <di:waypoint x="610" y="117" />
- <di:waypoint x="640" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_03p6ifi_di" bpmnElement="Flow_03p6ifi">
- <di:waypoint x="480" y="117" />
- <di:waypoint x="510" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_02bjz2v_di" bpmnElement="Flow_02bjz2v">
- <di:waypoint x="215" y="117" />
- <di:waypoint x="250" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0srinh7_di" bpmnElement="Flow_0srinh7">
- <di:waypoint x="1180" y="117" />
- <di:waypoint x="1232" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="179" y="99" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_19rmtjr_di" bpmnElement="Activity_19rmtjr">
- <dc:Bounds x="380" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0rto3n3_di" bpmnElement="Activity_0rto3n3">
- <dc:Bounds x="510" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1cluqgp_di" bpmnElement="Activity_1cluqgp">
- <dc:Bounds x="250" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_0iry5yw_di" bpmnElement="ServiceTask_0iry5yw">
- <dc:Bounds x="640" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="CallActivity_1yilxx3_di" bpmnElement="CallActivity_1yilxx3">
- <dc:Bounds x="780" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="CallActivity_0p84lpt_di" bpmnElement="CallActivity_0p84lpt">
- <dc:Bounds x="930" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_14qdixj_di" bpmnElement="Event_14qdixj">
- <dc:Bounds x="1232" y="99" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0g3dip7_di" bpmnElement="Activity_0g3dip7">
- <dc:Bounds x="1080" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0qtgdm9_di" bpmnElement="Activity_0qtgdm9" isExpanded="true">
- <dc:Bounds x="430" y="270" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_06q1m6i_di" bpmnElement="Flow_06q1m6i">
- <di:waypoint x="488" y="333" />
- <di:waypoint x="580" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0anjylz_di" bpmnElement="Flow_0anjylz">
- <di:waypoint x="680" y="333" />
- <di:waypoint x="812" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_08zcwc2_di" bpmnElement="Event_08zcwc2">
- <dc:Bounds x="452" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="458" y="358" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_1wkm29u_di" bpmnElement="Event_1wkm29u">
- <dc:Bounds x="812" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="822" y="357" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0ltxcii_di" bpmnElement="Activity_0ltxcii">
- <dc:Bounds x="580" y="293" width="100" height="80" />
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateNs.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateNs.bpmn
deleted file mode 100644
index 4c24f91cf9..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/CreateNs.bpmn
+++ /dev/null
@@ -1,266 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1l4zor5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="CreateNs" name="&#10;CreateNs" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1" name="Start Process">
- <bpmn:outgoing>Flow_1tqn5q5</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_1" name="End Process">
- <bpmn:incoming>Flow_0t87ov3</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_1tqn5q5" sourceRef="StartEvent_1" targetRef="Activity_15ksfz6" />
- <bpmn:serviceTask id="Activity_15ksfz6" name="Set Job Status to STARTED" camunda:asyncBefore="true" camunda:expression="${CreateNsTask.setJobStatusToStarted(execution)}">
- <bpmn:incoming>Flow_1tqn5q5</bpmn:incoming>
- <bpmn:outgoing>Flow_0y07mxe</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0y07mxe" sourceRef="Activity_15ksfz6" targetRef="Activity_12yonzp" />
- <bpmn:serviceTask id="Activity_1r4l8w8" name="Set Job Status to FINISHED" camunda:expression="${CreateNsTask.setJobStatusToFinished(execution)}">
- <bpmn:incoming>Flow_1rtsvpm</bpmn:incoming>
- <bpmn:outgoing>Flow_0t87ov3</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0t87ov3" sourceRef="Activity_1r4l8w8" targetRef="EndEvent_1" />
- <bpmn:exclusiveGateway id="Gateway_0fuwzjj" name="Does Ns Package exists?">
- <bpmn:incoming>Flow_09582uw</bpmn:incoming>
- <bpmn:outgoing>Flow_1f4vi10</bpmn:outgoing>
- <bpmn:outgoing>Flow_0qabgp7</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:serviceTask id="Activity_12yonzp" name="Get Ns Package from ETSI Catalog Manager" camunda:expression="${CreateNsTask.getNsPackage(execution)}">
- <bpmn:incoming>Flow_0y07mxe</bpmn:incoming>
- <bpmn:outgoing>Flow_09582uw</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_09582uw" sourceRef="Activity_12yonzp" targetRef="Gateway_0fuwzjj" />
- <bpmn:subProcess id="Activity_06ko4e2" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_1ibvrn2" name="error">
- <bpmn:outgoing>Flow_0554tjv</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0lc46mh" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_02f7sr1" name="end">
- <bpmn:incoming>Flow_04xvpee</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_0554tjv" sourceRef="Event_1ibvrn2" targetRef="Activity_1sj0nvr" />
- <bpmn:serviceTask id="Activity_1sj0nvr" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${CreateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0554tjv</bpmn:incoming>
- <bpmn:outgoing>Flow_04xvpee</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_04xvpee" sourceRef="Activity_1sj0nvr" targetRef="Event_02f7sr1" />
- </bpmn:subProcess>
- <bpmn:subProcess id="Activity_1dx9fz6" name="Java Exception Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_0zne7ch" name="error">
- <bpmn:outgoing>Flow_0j1otrx</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1p3h4ta" errorRef="Error_0s855yd" camunda:errorCodeVariable="BPMN_javaExpCode" camunda:errorMessageVariable="BPMN_javaExpMsg" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_0bcyh7u">
- <bpmn:incoming>Flow_0oqv7vl</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_0j1otrx" sourceRef="Event_0zne7ch" targetRef="Activity_15uwy90" />
- <bpmn:serviceTask id="Activity_15uwy90" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${CreateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0j1otrx</bpmn:incoming>
- <bpmn:outgoing>Flow_0oqv7vl</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0oqv7vl" sourceRef="Activity_15uwy90" targetRef="Event_0bcyh7u" />
- </bpmn:subProcess>
- <bpmn:sequenceFlow id="Flow_1f4vi10" name="No" sourceRef="Gateway_0fuwzjj" targetRef="Event_016q8gu">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not doesNsPackageExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:endEvent id="Event_016q8gu">
- <bpmn:incoming>Flow_1f4vi10</bpmn:incoming>
- <bpmn:incoming>Flow_1yql1cm</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1ugx52k" errorRef="Error_0rqvnym" />
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_0qabgp7" name="Yes" sourceRef="Gateway_0fuwzjj" targetRef="Activity_0vlb2nk">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{doesNsPackageExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:serviceTask id="Activity_0vlb2nk" name="Check NS Instance exists In DB " camunda:expression="${CreateNsTask.doesNsInstanceExistsInDb(execution)}">
- <bpmn:incoming>Flow_0qabgp7</bpmn:incoming>
- <bpmn:outgoing>Flow_1exrj2b</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1exrj2b" sourceRef="Activity_0vlb2nk" targetRef="Gateway_0d7n517" />
- <bpmn:exclusiveGateway id="Gateway_0d7n517">
- <bpmn:incoming>Flow_1exrj2b</bpmn:incoming>
- <bpmn:outgoing>Flow_1rkg44s</bpmn:outgoing>
- <bpmn:outgoing>Flow_1yql1cm</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="Flow_1rkg44s" name="No" sourceRef="Gateway_0d7n517" targetRef="Activity_09tqz8x">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not doesNsInstanceExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="Flow_1yql1cm" name="Yes" sourceRef="Gateway_0d7n517" targetRef="Event_016q8gu">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{doesNsInstanceExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:serviceTask id="Activity_09tqz8x" name="Create NS Instance record in DB" camunda:expression="${CreateNsTask.createNsInstanceInDb(execution)}">
- <bpmn:incoming>Flow_1rkg44s</bpmn:incoming>
- <bpmn:outgoing>Flow_1jvfwd2</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1jvfwd2" sourceRef="Activity_09tqz8x" targetRef="Activity_1akc79d" />
- <bpmn:serviceTask id="Activity_1akc79d" name="Create NS Instance in AAI" camunda:expression="${CreateNsTask.createNsInstanceInAai(execution)}">
- <bpmn:incoming>Flow_1jvfwd2</bpmn:incoming>
- <bpmn:outgoing>Flow_0e5hvno</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0e5hvno" sourceRef="Activity_1akc79d" targetRef="Activity_03ht66t" />
- <bpmn:serviceTask id="Activity_03ht66t" name="Set Create NS Response" camunda:expression="${CreateNsTask.setCreateNsResponse(execution)}">
- <bpmn:incoming>Flow_0e5hvno</bpmn:incoming>
- <bpmn:outgoing>Flow_1rtsvpm</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1rtsvpm" sourceRef="Activity_03ht66t" targetRef="Activity_1r4l8w8" />
- </bpmn:process>
- <bpmn:error id="Error_0s855yd" name="java.lang.Exception" errorCode="java.lang.Exception" />
- <bpmn:error id="Error_0rqvnym" name="NsWorkflowProcessingException" errorCode="CREATE_NS_WORKFLOW_PROCESSING_EXCEPTION" />
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateNs">
- <bpmndi:BPMNEdge id="Flow_1rtsvpm_di" bpmnElement="Flow_1rtsvpm">
- <di:waypoint x="1160" y="157" />
- <di:waypoint x="1160" y="230" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0e5hvno_di" bpmnElement="Flow_0e5hvno">
- <di:waypoint x="1070" y="117" />
- <di:waypoint x="1110" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1jvfwd2_di" bpmnElement="Flow_1jvfwd2">
- <di:waypoint x="930" y="117" />
- <di:waypoint x="970" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1yql1cm_di" bpmnElement="Flow_1yql1cm">
- <di:waypoint x="760" y="142" />
- <di:waypoint x="760" y="230" />
- <di:waypoint x="668" y="230" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="766" y="183" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1rkg44s_di" bpmnElement="Flow_1rkg44s">
- <di:waypoint x="785" y="117" />
- <di:waypoint x="830" y="117" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="799" y="99" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1exrj2b_di" bpmnElement="Flow_1exrj2b">
- <di:waypoint x="700" y="117" />
- <di:waypoint x="735" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0qabgp7_di" bpmnElement="Flow_0qabgp7">
- <di:waypoint x="565" y="117" />
- <di:waypoint x="600" y="117" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="579" y="99" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1f4vi10_di" bpmnElement="Flow_1f4vi10">
- <di:waypoint x="540" y="142" />
- <di:waypoint x="540" y="230" />
- <di:waypoint x="632" y="230" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="548" y="183" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_09582uw_di" bpmnElement="Flow_09582uw">
- <di:waypoint x="480" y="117" />
- <di:waypoint x="515" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0t87ov3_di" bpmnElement="Flow_0t87ov3">
- <di:waypoint x="1160" y="310" />
- <di:waypoint x="1160" y="357" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0y07mxe_di" bpmnElement="Flow_0y07mxe">
- <di:waypoint x="350" y="117" />
- <di:waypoint x="380" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1tqn5q5_di" bpmnElement="Flow_1tqn5q5">
- <di:waypoint x="208" y="117" />
- <di:waypoint x="250" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="172" y="99" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="158" y="142" width="67" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0db1w1a_di" bpmnElement="EndEvent_1">
- <dc:Bounds x="1142" y="357" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1129" y="400" width="63" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_15ksfz6_di" bpmnElement="Activity_15ksfz6">
- <dc:Bounds x="250" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1r4l8w8_di" bpmnElement="Activity_1r4l8w8">
- <dc:Bounds x="1110" y="230" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_0fuwzjj_di" bpmnElement="Gateway_0fuwzjj" isMarkerVisible="true">
- <dc:Bounds x="515" y="92" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="498" y="62" width="88" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_12yonzp_di" bpmnElement="Activity_12yonzp">
- <dc:Bounds x="380" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_06ko4e2_di" bpmnElement="Activity_06ko4e2" isExpanded="true">
- <dc:Bounds x="431" y="310" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_04xvpee_di" bpmnElement="Flow_04xvpee">
- <di:waypoint x="681" y="373" />
- <di:waypoint x="813" y="373" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0554tjv_di" bpmnElement="Flow_0554tjv">
- <di:waypoint x="489" y="373" />
- <di:waypoint x="581" y="373" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_1ibvrn2_di" bpmnElement="Event_1ibvrn2">
- <dc:Bounds x="453" y="355" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="459" y="398" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_02f7sr1_di" bpmnElement="Event_02f7sr1">
- <dc:Bounds x="813" y="355" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="823" y="397" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1sj0nvr_di" bpmnElement="Activity_1sj0nvr">
- <dc:Bounds x="581" y="333" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1dx9fz6_di" bpmnElement="Activity_1dx9fz6" isExpanded="true">
- <dc:Bounds x="431" y="470" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_0oqv7vl_di" bpmnElement="Flow_0oqv7vl">
- <di:waypoint x="680" y="533" />
- <di:waypoint x="772" y="533" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0j1otrx_di" bpmnElement="Flow_0j1otrx">
- <di:waypoint x="522" y="533" />
- <di:waypoint x="580" y="533" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_0zne7ch_di" bpmnElement="Event_0zne7ch">
- <dc:Bounds x="486" y="515" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="493" y="558" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0bcyh7u_di" bpmnElement="Event_0bcyh7u">
- <dc:Bounds x="772" y="515" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_15uwy90_di" bpmnElement="Activity_15uwy90">
- <dc:Bounds x="580" y="493" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0spfqz1_di" bpmnElement="Event_016q8gu">
- <dc:Bounds x="632" y="212" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0vlb2nk_di" bpmnElement="Activity_0vlb2nk">
- <dc:Bounds x="600" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_0d7n517_di" bpmnElement="Gateway_0d7n517" isMarkerVisible="true">
- <dc:Bounds x="735" y="92" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_09tqz8x_di" bpmnElement="Activity_09tqz8x">
- <dc:Bounds x="830" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1akc79d_di" bpmnElement="Activity_1akc79d">
- <dc:Bounds x="970" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_03ht66t_di" bpmnElement="Activity_03ht66t">
- <dc:Bounds x="1110" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/DeleteNs.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/DeleteNs.bpmn
deleted file mode 100644
index a6bb214440..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/DeleteNs.bpmn
+++ /dev/null
@@ -1,260 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1l4zor5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="DeleteNs" name="DeleteNs" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1" name="Start Process">
- <bpmn:outgoing>Flow_1tqn5q5</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_1" name="End Process">
- <bpmn:incoming>Flow_0t87ov3</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_1tqn5q5" sourceRef="StartEvent_1" targetRef="Activity_15ksfz6" />
- <bpmn:serviceTask id="Activity_15ksfz6" name="Set Job Status to STARTED" camunda:asyncBefore="true" camunda:expression="${DeleteNsTask.setJobStatusToStarted(execution)}">
- <bpmn:incoming>Flow_1tqn5q5</bpmn:incoming>
- <bpmn:outgoing>Flow_0fhodlp</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:serviceTask id="Activity_1r4l8w8" name="Set Job Status to FINISHED" camunda:expression="${DeleteNsTask.setJobStatusToFinished(execution)}">
- <bpmn:incoming>Flow_1rtsvpm</bpmn:incoming>
- <bpmn:outgoing>Flow_0t87ov3</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0t87ov3" sourceRef="Activity_1r4l8w8" targetRef="EndEvent_1" />
- <bpmn:subProcess id="Activity_06ko4e2" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_1ibvrn2" name="error">
- <bpmn:outgoing>Flow_0554tjv</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0lc46mh" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_02f7sr1" name="end">
- <bpmn:incoming>Flow_04xvpee</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_0554tjv" sourceRef="Event_1ibvrn2" targetRef="Activity_1sj0nvr" />
- <bpmn:serviceTask id="Activity_1sj0nvr" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${DeleteNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0554tjv</bpmn:incoming>
- <bpmn:outgoing>Flow_04xvpee</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_04xvpee" sourceRef="Activity_1sj0nvr" targetRef="Event_02f7sr1" />
- </bpmn:subProcess>
- <bpmn:subProcess id="Activity_1dx9fz6" name="Java Exception Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_0zne7ch" name="error">
- <bpmn:outgoing>Flow_0j1otrx</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1p3h4ta" errorRef="Error_0rqvnym" camunda:errorCodeVariable="BPMN_javaExpCode" camunda:errorMessageVariable="BPMN_javaExpMsg" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_0bcyh7u">
- <bpmn:incoming>Flow_0oqv7vl</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_0j1otrx" sourceRef="Event_0zne7ch" targetRef="Activity_15uwy90" />
- <bpmn:serviceTask id="Activity_15uwy90" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${DeleteNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0j1otrx</bpmn:incoming>
- <bpmn:outgoing>Flow_0oqv7vl</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0oqv7vl" sourceRef="Activity_15uwy90" targetRef="Event_0bcyh7u" />
- </bpmn:subProcess>
- <bpmn:serviceTask id="Activity_0vlb2nk" name="Check NS Instance exists In DB " camunda:expression="${DeleteNsTask.checkIfNsInstanceExistsInDb(execution)}">
- <bpmn:incoming>Flow_0fhodlp</bpmn:incoming>
- <bpmn:outgoing>Flow_1duwqzf</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:serviceTask id="Activity_09tqz8x" name="Check that NS Instance in DB is in NOT_INSTANTIATED state" camunda:expression="${DeleteNsTask.checkthatNsInstanceInDbIsInNotInstantiatedState(execution)}">
- <bpmn:incoming>Flow_02g3nbb</bpmn:incoming>
- <bpmn:outgoing>Flow_1ihvsfs</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:serviceTask id="Activity_03ht66t" name="Delete NS Instance from DB" camunda:expression="${DeleteNsTask.deleteNsInstanceFromDb(execution)}">
- <bpmn:incoming>Flow_04wub0a</bpmn:incoming>
- <bpmn:outgoing>Flow_1rtsvpm</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1rtsvpm" sourceRef="Activity_03ht66t" targetRef="Activity_1r4l8w8" />
- <bpmn:sequenceFlow id="Flow_0fhodlp" sourceRef="Activity_15ksfz6" targetRef="Activity_0vlb2nk" />
- <bpmn:sequenceFlow id="Flow_1duwqzf" sourceRef="Activity_0vlb2nk" targetRef="Gateway_1tjajb0" />
- <bpmn:sequenceFlow id="Flow_1ihvsfs" sourceRef="Activity_09tqz8x" targetRef="Gateway_1voek52" />
- <bpmn:serviceTask id="Activity_1rrzri0" name="Delete NS Instance from AAI" camunda:expression="${DeleteNsTask.deleteNsInstanceFromAai(execution)}">
- <bpmn:incoming>Flow_1buncqe</bpmn:incoming>
- <bpmn:outgoing>Flow_04wub0a</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_04wub0a" sourceRef="Activity_1rrzri0" targetRef="Activity_03ht66t" />
- <bpmn:exclusiveGateway id="Gateway_1tjajb0" name="Does NS Instance Exist?">
- <bpmn:incoming>Flow_1duwqzf</bpmn:incoming>
- <bpmn:outgoing>Flow_02g3nbb</bpmn:outgoing>
- <bpmn:outgoing>Flow_1swnlzf</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="Flow_02g3nbb" name="Yes" sourceRef="Gateway_1tjajb0" targetRef="Activity_09tqz8x">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{nsInstanceExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:exclusiveGateway id="Gateway_1voek52" name="Is NS Instance in NOT INSTANTIATED State?">
- <bpmn:incoming>Flow_1ihvsfs</bpmn:incoming>
- <bpmn:outgoing>Flow_1buncqe</bpmn:outgoing>
- <bpmn:outgoing>Flow_1eozcur</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="Flow_1buncqe" name="Yes" sourceRef="Gateway_1voek52" targetRef="Activity_1rrzri0">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{isInNotInstantiatedState}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:endEvent id="Event_0dqc93c">
- <bpmn:incoming>Flow_1swnlzf</bpmn:incoming>
- <bpmn:incoming>Flow_1eozcur</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0pfrgad" errorRef="Error_0rqvnym" />
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="Flow_1swnlzf" name="No" sourceRef="Gateway_1tjajb0" targetRef="Event_0dqc93c">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not nsInstanceExists}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="Flow_1eozcur" name="No" sourceRef="Gateway_1voek52" targetRef="Event_0dqc93c">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not isInNotInstantiatedState}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- </bpmn:process>
- <bpmn:error id="Error_0s855yd" name="java.lang.Exception" errorCode="java.lang.Exception" />
- <bpmn:error id="Error_0rqvnym" name="NsWorkflowProcessingException" errorCode="DELETE_NS_WORKFLOW_PROCESSING_EXCEPTION" />
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteNs">
- <bpmndi:BPMNEdge id="Flow_1eozcur_di" bpmnElement="Flow_1eozcur">
- <di:waypoint x="830" y="192" />
- <di:waypoint x="830" y="270" />
- <di:waypoint x="708" y="270" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="843" y="228" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1swnlzf_di" bpmnElement="Flow_1swnlzf">
- <di:waypoint x="550" y="192" />
- <di:waypoint x="550" y="270" />
- <di:waypoint x="672" y="270" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="558" y="228" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1buncqe_di" bpmnElement="Flow_1buncqe">
- <di:waypoint x="855" y="167" />
- <di:waypoint x="960" y="167" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="890" y="149" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_02g3nbb_di" bpmnElement="Flow_02g3nbb">
- <di:waypoint x="575" y="167" />
- <di:waypoint x="640" y="167" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="598" y="149" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_04wub0a_di" bpmnElement="Flow_04wub0a">
- <di:waypoint x="1060" y="167" />
- <di:waypoint x="1100" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1ihvsfs_di" bpmnElement="Flow_1ihvsfs">
- <di:waypoint x="740" y="167" />
- <di:waypoint x="805" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1duwqzf_di" bpmnElement="Flow_1duwqzf">
- <di:waypoint x="490" y="167" />
- <di:waypoint x="525" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0fhodlp_di" bpmnElement="Flow_0fhodlp">
- <di:waypoint x="350" y="167" />
- <di:waypoint x="390" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1rtsvpm_di" bpmnElement="Flow_1rtsvpm">
- <di:waypoint x="1200" y="167" />
- <di:waypoint x="1240" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0t87ov3_di" bpmnElement="Flow_0t87ov3">
- <di:waypoint x="1340" y="167" />
- <di:waypoint x="1382" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1tqn5q5_di" bpmnElement="Flow_1tqn5q5">
- <di:waypoint x="208" y="167" />
- <di:waypoint x="250" y="167" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="172" y="149" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="158" y="192" width="67" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0db1w1a_di" bpmnElement="EndEvent_1">
- <dc:Bounds x="1382" y="149" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1369" y="192" width="63" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_15ksfz6_di" bpmnElement="Activity_15ksfz6">
- <dc:Bounds x="250" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1r4l8w8_di" bpmnElement="Activity_1r4l8w8">
- <dc:Bounds x="1240" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_06ko4e2_di" bpmnElement="Activity_06ko4e2" isExpanded="true">
- <dc:Bounds x="431" y="360" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_04xvpee_di" bpmnElement="Flow_04xvpee">
- <di:waypoint x="681" y="423" />
- <di:waypoint x="813" y="423" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0554tjv_di" bpmnElement="Flow_0554tjv">
- <di:waypoint x="489" y="423" />
- <di:waypoint x="581" y="423" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_1ibvrn2_di" bpmnElement="Event_1ibvrn2">
- <dc:Bounds x="453" y="405" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="459" y="448" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_02f7sr1_di" bpmnElement="Event_02f7sr1">
- <dc:Bounds x="813" y="405" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="823" y="447" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1sj0nvr_di" bpmnElement="Activity_1sj0nvr">
- <dc:Bounds x="581" y="383" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1dx9fz6_di" bpmnElement="Activity_1dx9fz6" isExpanded="true">
- <dc:Bounds x="431" y="520" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_0oqv7vl_di" bpmnElement="Flow_0oqv7vl">
- <di:waypoint x="680" y="583" />
- <di:waypoint x="772" y="583" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0j1otrx_di" bpmnElement="Flow_0j1otrx">
- <di:waypoint x="522" y="583" />
- <di:waypoint x="580" y="583" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_0zne7ch_di" bpmnElement="Event_0zne7ch">
- <dc:Bounds x="486" y="565" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="493" y="608" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0bcyh7u_di" bpmnElement="Event_0bcyh7u">
- <dc:Bounds x="772" y="565" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_15uwy90_di" bpmnElement="Activity_15uwy90">
- <dc:Bounds x="580" y="543" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0vlb2nk_di" bpmnElement="Activity_0vlb2nk">
- <dc:Bounds x="390" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_09tqz8x_di" bpmnElement="Activity_09tqz8x">
- <dc:Bounds x="640" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_03ht66t_di" bpmnElement="Activity_03ht66t">
- <dc:Bounds x="1100" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1rrzri0_di" bpmnElement="Activity_1rrzri0">
- <dc:Bounds x="960" y="127" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_1tjajb0_di" bpmnElement="Gateway_1tjajb0" isMarkerVisible="true">
- <dc:Bounds x="525" y="142" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="505" y="106" width="89" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_1voek52_di" bpmnElement="Gateway_1voek52" isMarkerVisible="true">
- <dc:Bounds x="805" y="142" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="791" y="83" width="79" height="53" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_029a1ih_di" bpmnElement="Event_0dqc93c">
- <dc:Bounds x="672" y="252" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="646" y="245" width="88" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/InstantiateNs.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/InstantiateNs.bpmn
deleted file mode 100644
index bc34c144c9..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/InstantiateNs.bpmn
+++ /dev/null
@@ -1,331 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0mdda96" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
- <bpmn:process id="InstantiateNs" name="InstantiateNs" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1" name="Start Process">
- <bpmn:outgoing>SequenceFlow_16k0f61</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:sequenceFlow id="SequenceFlow_16k0f61" sourceRef="StartEvent_1" targetRef="Activity_194tqy0" />
- <bpmn:serviceTask id="Task_0opnwx0" name="Update NS Instance status to INSTANTIATING" camunda:expression="${InstantiateNsTask.updateNsInstanceStatusToInstantiating(execution)}">
- <bpmn:incoming>Flow_04pxtdd</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0bdznyp</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:endEvent id="EndEvent_0szswbo" name="End Process">
- <bpmn:incoming>Flow_1pcu8aa</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0bdznyp" sourceRef="Task_0opnwx0" targetRef="Activity_1jrym1e" />
- <bpmn:serviceTask id="Activity_194tqy0" name="Set Job Status to STARTED" camunda:asyncBefore="true" camunda:expression="${InstantiateNsTask.setJobStatusToStarted(execution)}">
- <bpmn:incoming>SequenceFlow_16k0f61</bpmn:incoming>
- <bpmn:outgoing>Flow_04pxtdd</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_04pxtdd" sourceRef="Activity_194tqy0" targetRef="Task_0opnwx0" />
- <bpmn:subProcess id="Activity_0pjxszh" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_1rpzcl3" name="error">
- <bpmn:outgoing>Flow_07bh7l7</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0m2e0oa" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_1fcw3ei" name="end">
- <bpmn:incoming>Flow_1wa1jpl</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_0ddja9m" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${InstantiateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0n3dai5</bpmn:incoming>
- <bpmn:outgoing>Flow_1wa1jpl</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1wa1jpl" sourceRef="Activity_0ddja9m" targetRef="Event_1fcw3ei" />
- <bpmn:sequenceFlow id="Flow_07bh7l7" sourceRef="Event_1rpzcl3" targetRef="Activity_1miy3hw" />
- <bpmn:serviceTask id="Activity_1miy3hw" name="Update NSLcmOpOcc operation status to FAILED" camunda:asyncBefore="true" camunda:expression="${InstantiateNsTask.updateNsLcmOpOccStatusToFailed(execution)}">
- <bpmn:incoming>Flow_07bh7l7</bpmn:incoming>
- <bpmn:outgoing>Flow_0n3dai5</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0n3dai5" sourceRef="Activity_1miy3hw" targetRef="Activity_0ddja9m" />
- </bpmn:subProcess>
- <bpmn:subProcess id="Activity_0mtscwq" name="Java Exception Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_0lqr6al" name="error">
- <bpmn:outgoing>Flow_05lo00r</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_02lwl19" errorRef="Error_0jsct8p" camunda:errorCodeVariable="BPMN_javaExpCode" camunda:errorMessageVariable="BPMN_javaExpMsg" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_05ty7c4">
- <bpmn:incoming>Flow_16aryg5</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_1ezu7d4" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${InstantiateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_09zcw2a</bpmn:incoming>
- <bpmn:outgoing>Flow_16aryg5</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_16aryg5" sourceRef="Activity_1ezu7d4" targetRef="Event_05ty7c4" />
- <bpmn:sequenceFlow id="Flow_05lo00r" sourceRef="Event_0lqr6al" targetRef="Activity_17leldb" />
- <bpmn:serviceTask id="Activity_17leldb" name="Update NSLcmOpOcc operation status to FAILED" camunda:asyncBefore="true" camunda:expression="${InstantiateNsTask.updateNsLcmOpOccStatusToFailed(execution)}">
- <bpmn:incoming>Flow_05lo00r</bpmn:incoming>
- <bpmn:outgoing>Flow_09zcw2a</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_09zcw2a" sourceRef="Activity_17leldb" targetRef="Activity_1ezu7d4" />
- </bpmn:subProcess>
- <bpmn:serviceTask id="Activity_1w09i1k" name="Set Job Status to FINISHED" camunda:expression="${InstantiateNsTask.setJobStatusToFinished(execution)}">
- <bpmn:incoming>Flow_1i36dw4</bpmn:incoming>
- <bpmn:outgoing>Flow_1pcu8aa</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1pcu8aa" sourceRef="Activity_1w09i1k" targetRef="EndEvent_0szswbo" />
- <bpmn:serviceTask id="Activity_1jrym1e" name="Get and parse NSD from ETSI Catalog" camunda:expression="${InstantiateNsTask.getAndParseNsdFromEtsiCatalog(execution)}">
- <bpmn:incoming>SequenceFlow_0bdznyp</bpmn:incoming>
- <bpmn:outgoing>Flow_10zjw0w</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_10zjw0w" sourceRef="Activity_1jrym1e" targetRef="Activity_1kikjaf" />
- <bpmn:callActivity id="Activity_1b2s2wr" name="Create and Instantiate each Vnf" calledElement="CreateInstantiateVnf">
- <bpmn:extensionElements>
- <camunda:in source="request" target="request" />
- <camunda:in source="jobId" target="jobId" />
- <camunda:in source="NsInstanceId" target="NsInstanceId" />
- </bpmn:extensionElements>
- <bpmn:incoming>Flow_1irbp9b</bpmn:incoming>
- <bpmn:outgoing>Flow_0mi4nqa</bpmn:outgoing>
- <bpmn:multiInstanceLoopCharacteristics camunda:asyncAfter="true" camunda:collection="${vnfCreateInstantiateRequests}" camunda:elementVariable="request" />
- </bpmn:callActivity>
- <bpmn:boundaryEvent id="Event_0rbb817" name="Overall Wait" attachedToRef="Activity_1b2s2wr">
- <bpmn:outgoing>Flow_17zn7we</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_13ud1f4">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="Flow_17zn7we" sourceRef="Event_0rbb817" targetRef="Activity_16z66xm" />
- <bpmn:serviceTask id="Activity_0eou3y4" name="Prepare Create Instantiate requests" camunda:expression="${InstantiateNsTask.prepareCreateInstantiateRequests(execution)}">
- <bpmn:incoming>Flow_01ju1mj</bpmn:incoming>
- <bpmn:outgoing>Flow_1irbp9b</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1irbp9b" sourceRef="Activity_0eou3y4" targetRef="Activity_1b2s2wr" />
- <bpmn:serviceTask id="Activity_1kikjaf" name="Get Vnf Pkg ID for each VNFD ID" camunda:expression="${InstantiateNsTask.getVnfPkgIdForEachVnfdId(execution)}">
- <bpmn:incoming>Flow_10zjw0w</bpmn:incoming>
- <bpmn:outgoing>Flow_01ju1mj</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_01ju1mj" sourceRef="Activity_1kikjaf" targetRef="Activity_0eou3y4" />
- <bpmn:serviceTask id="Activity_16cvdbw" name="Update NS Instance status to INSTANTIATED" camunda:expression="${InstantiateNsTask.updateNsInstanceStatusToInstantiated(execution)}">
- <bpmn:incoming>Flow_1nieng0</bpmn:incoming>
- <bpmn:outgoing>Flow_0xptc0r</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0xptc0r" sourceRef="Activity_16cvdbw" targetRef="Activity_0gkpdft" />
- <bpmn:endEvent id="Event_1e4bwip">
- <bpmn:incoming>Flow_10oprxr</bpmn:incoming>
- <bpmn:incoming>Flow_1p21p1m</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0vg6v5r" errorRef="Error_0jsct8p" />
- </bpmn:endEvent>
- <bpmn:exclusiveGateway id="Gateway_0nxf0rv" name="is Successful?">
- <bpmn:incoming>Flow_15m4nm1</bpmn:incoming>
- <bpmn:outgoing>Flow_1nieng0</bpmn:outgoing>
- <bpmn:outgoing>Flow_10oprxr</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="Flow_1nieng0" name="Yes" sourceRef="Gateway_0nxf0rv" targetRef="Activity_16cvdbw">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{isNsInstantiationSuccessful}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:serviceTask id="Activity_14iwa8x" name="Check if VNF Instantiation was Successful" camunda:expression="${InstantiateNsTask.checkIfVnfInstantiationWasSuccessful(execution)}">
- <bpmn:incoming>Flow_0mi4nqa</bpmn:incoming>
- <bpmn:outgoing>Flow_15m4nm1</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0mi4nqa" sourceRef="Activity_1b2s2wr" targetRef="Activity_14iwa8x" />
- <bpmn:sequenceFlow id="Flow_15m4nm1" sourceRef="Activity_14iwa8x" targetRef="Gateway_0nxf0rv" />
- <bpmn:serviceTask id="Activity_16z66xm" name="Log TimeOut" camunda:expression="${InstantiateNsTask.logTimeOut(execution)}">
- <bpmn:incoming>Flow_17zn7we</bpmn:incoming>
- <bpmn:outgoing>Flow_1p21p1m</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_10oprxr" name="No" sourceRef="Gateway_0nxf0rv" targetRef="Event_1e4bwip">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not isNsInstantiationSuccessful}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="Flow_1p21p1m" sourceRef="Activity_16z66xm" targetRef="Event_1e4bwip" />
- <bpmn:serviceTask id="Activity_0gkpdft" name="Update NSLcmOpOcc operation status to COMPLETED" camunda:expression="${InstantiateNsTask.updateNsLcmOpOccStatusToCompleted(execution)}">
- <bpmn:incoming>Flow_0xptc0r</bpmn:incoming>
- <bpmn:outgoing>Flow_1i36dw4</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1i36dw4" sourceRef="Activity_0gkpdft" targetRef="Activity_1w09i1k" />
- </bpmn:process>
- <bpmn:error id="Error_0jsct8p" name="NsWorkflowProcessingException" errorCode="INSTANTIATE_NS_WORKFLOW_PROCESSING_EXCEPTION" />
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="InstantiateNs">
- <bpmndi:BPMNEdge id="Flow_1p21p1m_di" bpmnElement="Flow_1p21p1m">
- <di:waypoint x="1250" y="270" />
- <di:waypoint x="1332" y="270" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_10oprxr_di" bpmnElement="Flow_10oprxr">
- <di:waypoint x="1350" y="146" />
- <di:waypoint x="1350" y="252" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1358" y="196" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_15m4nm1_di" bpmnElement="Flow_15m4nm1">
- <di:waypoint x="1250" y="121" />
- <di:waypoint x="1325" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0mi4nqa_di" bpmnElement="Flow_0mi4nqa">
- <di:waypoint x="1090" y="121" />
- <di:waypoint x="1150" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1nieng0_di" bpmnElement="Flow_1nieng0">
- <di:waypoint x="1375" y="121" />
- <di:waypoint x="1430" y="121" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1393" y="103" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0xptc0r_di" bpmnElement="Flow_0xptc0r">
- <di:waypoint x="1530" y="121" />
- <di:waypoint x="1580" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_01ju1mj_di" bpmnElement="Flow_01ju1mj">
- <di:waypoint x="800" y="121" />
- <di:waypoint x="850" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1irbp9b_di" bpmnElement="Flow_1irbp9b">
- <di:waypoint x="950" y="121" />
- <di:waypoint x="990" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_17zn7we_di" bpmnElement="Flow_17zn7we">
- <di:waypoint x="1070" y="179" />
- <di:waypoint x="1070" y="270" />
- <di:waypoint x="1150" y="270" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_10zjw0w_di" bpmnElement="Flow_10zjw0w">
- <di:waypoint x="649" y="121" />
- <di:waypoint x="700" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1pcu8aa_di" bpmnElement="Flow_1pcu8aa">
- <di:waypoint x="1820" y="121" />
- <di:waypoint x="1862" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_04pxtdd_di" bpmnElement="Flow_04pxtdd">
- <di:waypoint x="360" y="121" />
- <di:waypoint x="400" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0bdznyp_di" bpmnElement="SequenceFlow_0bdznyp">
- <di:waypoint x="500" y="121" />
- <di:waypoint x="549" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_16k0f61_di" bpmnElement="SequenceFlow_16k0f61">
- <di:waypoint x="208" y="121" />
- <di:waypoint x="260" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1i36dw4_di" bpmnElement="Flow_1i36dw4">
- <di:waypoint x="1680" y="121" />
- <di:waypoint x="1720" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="172" y="103" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="157" y="146" width="67" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_1y7xfqt_di" bpmnElement="Task_0opnwx0">
- <dc:Bounds x="400" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_194tqy0_di" bpmnElement="Activity_194tqy0">
- <dc:Bounds x="260" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0szswbo_di" bpmnElement="EndEvent_0szswbo">
- <dc:Bounds x="1862" y="103" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1848" y="79" width="63" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1w09i1k_di" bpmnElement="Activity_1w09i1k">
- <dc:Bounds x="1720" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0gkpdft_di" bpmnElement="Activity_0gkpdft">
- <dc:Bounds x="1580" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0pjxszh_di" bpmnElement="Activity_0pjxszh" isExpanded="true">
- <dc:Bounds x="380" y="270" width="510" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_07bh7l7_di" bpmnElement="Flow_07bh7l7">
- <di:waypoint x="438" y="333" />
- <di:waypoint x="500" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1wa1jpl_di" bpmnElement="Flow_1wa1jpl">
- <di:waypoint x="760" y="333" />
- <di:waypoint x="822" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0n3dai5_di" bpmnElement="Flow_0n3dai5">
- <di:waypoint x="600" y="333" />
- <di:waypoint x="660" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_1rpzcl3_di" bpmnElement="Event_1rpzcl3">
- <dc:Bounds x="402" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="408" y="358" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1miy3hw_di" bpmnElement="Activity_1miy3hw">
- <dc:Bounds x="500" y="293" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0ddja9m_di" bpmnElement="Activity_0ddja9m">
- <dc:Bounds x="660" y="293" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_1fcw3ei_di" bpmnElement="Event_1fcw3ei">
- <dc:Bounds x="822" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="832" y="357" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0mtscwq_di" bpmnElement="Activity_0mtscwq" isExpanded="true">
- <dc:Bounds x="380" y="430" width="510" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_05lo00r_di" bpmnElement="Flow_05lo00r">
- <di:waypoint x="438" y="493" />
- <di:waypoint x="500" y="493" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_16aryg5_di" bpmnElement="Flow_16aryg5">
- <di:waypoint x="760" y="493" />
- <di:waypoint x="822" y="493" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_09zcw2a_di" bpmnElement="Flow_09zcw2a">
- <di:waypoint x="600" y="493" />
- <di:waypoint x="660" y="493" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_0lqr6al_di" bpmnElement="Event_0lqr6al">
- <dc:Bounds x="402" y="475" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="409" y="518" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_17leldb_di" bpmnElement="Activity_17leldb">
- <dc:Bounds x="500" y="453" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1ezu7d4_di" bpmnElement="Activity_1ezu7d4">
- <dc:Bounds x="660" y="453" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_05ty7c4_di" bpmnElement="Event_05ty7c4">
- <dc:Bounds x="822" y="475" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1jrym1e_di" bpmnElement="Activity_1jrym1e">
- <dc:Bounds x="549" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1xjmizv_di" bpmnElement="Activity_1b2s2wr">
- <dc:Bounds x="990" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0eou3y4_di" bpmnElement="Activity_0eou3y4">
- <dc:Bounds x="850" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1kikjaf_di" bpmnElement="Activity_1kikjaf">
- <dc:Bounds x="700" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_16cvdbw_di" bpmnElement="Activity_16cvdbw">
- <dc:Bounds x="1430" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_16umj30_di" bpmnElement="Event_1e4bwip">
- <dc:Bounds x="1332" y="252" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_0nxf0rv_di" bpmnElement="Gateway_0nxf0rv" isMarkerVisible="true">
- <dc:Bounds x="1325" y="96" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1320" y="66" width="71" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_14iwa8x_di" bpmnElement="Activity_14iwa8x">
- <dc:Bounds x="1150" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_16z66xm_di" bpmnElement="Activity_16z66xm">
- <dc:Bounds x="1150" y="230" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0rbb817_di" bpmnElement="Event_0rbb817">
- <dc:Bounds x="1052" y="143" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1000" y="183" width="60" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/META-INF/services/org.onap.so.client.RestProperties b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
deleted file mode 100644
index 9d9ba7371a..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/META-INF/services/org.onap.so.client.RestProperties
+++ /dev/null
@@ -1 +0,0 @@
-org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.aai.AaiPropertiesImpl \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateJob.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateJob.bpmn
deleted file mode 100644
index a9204ec442..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateJob.bpmn
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_12gnsyw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
- <bpmn:process id="MonitorSol003AdapterCreateJob" name="MonitorSol003AdapterCreateJob" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>SequenceFlow_1x3tbl0</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_0rf1gde">
- <bpmn:incoming>SequenceFlow_1543qy7</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:subProcess id="SubProcess_19j0v63">
- <bpmn:incoming>SequenceFlow_1x3tbl0</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1v4yr3f</bpmn:outgoing>
- <bpmn:startEvent id="StartEvent_01r97z2">
- <bpmn:outgoing>SequenceFlow_0s1plu9</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:exclusiveGateway id="ExclusiveGateway_1hkl6yy" default="SequenceFlow_1vmxw9g">
- <bpmn:incoming>SequenceFlow_153a3kp</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1vmxw9g</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_0is7myf</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1besn3n" name="Wait between checks" camunda:asyncAfter="true">
- <bpmn:incoming>SequenceFlow_1vmxw9g</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0etw572</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_0qgh11t">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT15S</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:intermediateCatchEvent>
- <bpmn:endEvent id="EndEvent_1ohsce9">
- <bpmn:incoming>SequenceFlow_0is7myf</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0s1plu9" sourceRef="StartEvent_01r97z2" targetRef="ServiceTask_17jlnng" />
- <bpmn:sequenceFlow id="SequenceFlow_0etw572" sourceRef="IntermediateCatchEvent_1besn3n" targetRef="ServiceTask_17jlnng" />
- <bpmn:serviceTask id="ServiceTask_17jlnng" name="&#10;Get Current Operation Status&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterCreateJobTask.getCurrentOperationStatus(execution)}">
- <bpmn:incoming>SequenceFlow_0etw572</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_0s1plu9</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_153a3kp</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1vmxw9g" sourceRef="ExclusiveGateway_1hkl6yy" targetRef="IntermediateCatchEvent_1besn3n" />
- <bpmn:sequenceFlow id="SequenceFlow_0is7myf" sourceRef="ExclusiveGateway_1hkl6yy" targetRef="EndEvent_1ohsce9">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${MonitorSol003AdapterCreateJobTask.hasOperationFinished(execution)}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_153a3kp" sourceRef="ServiceTask_17jlnng" targetRef="ExclusiveGateway_1hkl6yy" />
- </bpmn:subProcess>
- <bpmn:endEvent id="EndEvent_1w3t3t0" name="Timeout Exception">
- <bpmn:incoming>SequenceFlow_0bcgtzj</bpmn:incoming>
- <bpmn:terminateEventDefinition id="TerminateEventDefinition_0fjecl3" />
- </bpmn:endEvent>
- <bpmn:boundaryEvent id="BoundaryEvent_0xiabzp" name="Overall Wait" attachedToRef="SubProcess_19j0v63">
- <bpmn:outgoing>SequenceFlow_1i1o9sh</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_10kqw61">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1v4yr3f" sourceRef="SubProcess_19j0v63" targetRef="ServiceTask_1gms128" />
- <bpmn:sequenceFlow id="SequenceFlow_1i1o9sh" sourceRef="BoundaryEvent_0xiabzp" targetRef="ServiceTask_1s87b92" />
- <bpmn:sequenceFlow id="SequenceFlow_1x3tbl0" sourceRef="StartEvent_1" targetRef="SubProcess_19j0v63" />
- <bpmn:serviceTask id="ServiceTask_1s87b92" name="&#10;Time Out Log Failure&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterCreateJobTask.timeOutLogFailue(execution)}">
- <bpmn:incoming>SequenceFlow_1i1o9sh</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0bcgtzj</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_0bcgtzj" sourceRef="ServiceTask_1s87b92" targetRef="EndEvent_1w3t3t0" />
- <bpmn:serviceTask id="ServiceTask_1gms128" name="&#10;Check if operation was successful&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterCreateJobTask.checkIfOperationWasSuccessful(execution)}">
- <bpmn:incoming>SequenceFlow_1v4yr3f</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1543qy7</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1543qy7" sourceRef="ServiceTask_1gms128" targetRef="EndEvent_0rf1gde" />
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MonitorSol003AdapterCreateJob">
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="161" y="330" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0rf1gde_di" bpmnElement="EndEvent_0rf1gde">
- <dc:Bounds x="1102" y="100" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_19j0v63_di" bpmnElement="SubProcess_19j0v63" isExpanded="true">
- <dc:Bounds x="301" y="248" width="523" height="200" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1w3t3t0_di" bpmnElement="EndEvent_1w3t3t0">
- <dc:Bounds x="1102" y="322" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1095" y="282" width="49" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BoundaryEvent_0xiabzp_di" bpmnElement="BoundaryEvent_0xiabzp">
- <dc:Bounds x="806" y="322" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="794" y="361" width="61" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1v4yr3f_di" bpmnElement="SequenceFlow_1v4yr3f">
- <di:waypoint x="563" y="248" />
- <di:waypoint x="563" y="118" />
- <di:waypoint x="923" y="118" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1i1o9sh_di" bpmnElement="SequenceFlow_1i1o9sh">
- <di:waypoint x="842" y="340" />
- <di:waypoint x="923" y="340" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_01r97z2_di" bpmnElement="StartEvent_01r97z2">
- <dc:Bounds x="330" y="306" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_1hkl6yy_di" bpmnElement="ExclusiveGateway_1hkl6yy" isMarkerVisible="true">
- <dc:Bounds x="609" y="299" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="IntermediateCatchEvent_1besn3n_di" bpmnElement="IntermediateCatchEvent_1besn3n">
- <dc:Bounds x="550" y="378" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="537" y="421" width="66" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1ohsce9_di" bpmnElement="EndEvent_1ohsce9">
- <dc:Bounds x="722" y="306" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1x3tbl0_di" bpmnElement="SequenceFlow_1x3tbl0">
- <di:waypoint x="197" y="348" />
- <di:waypoint x="301" y="348" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_17jlnng_di" bpmnElement="ServiceTask_17jlnng">
- <dc:Bounds x="425" y="284" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0s1plu9_di" bpmnElement="SequenceFlow_0s1plu9">
- <di:waypoint x="366" y="324" />
- <di:waypoint x="425" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0etw572_di" bpmnElement="SequenceFlow_0etw572">
- <di:waypoint x="550" y="396" />
- <di:waypoint x="486" y="396" />
- <di:waypoint x="486" y="367" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1vmxw9g_di" bpmnElement="SequenceFlow_1vmxw9g">
- <di:waypoint x="634" y="349" />
- <di:waypoint x="634" y="396" />
- <di:waypoint x="586" y="396" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0is7myf_di" bpmnElement="SequenceFlow_0is7myf">
- <di:waypoint x="659" y="324" />
- <di:waypoint x="722" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_153a3kp_di" bpmnElement="SequenceFlow_153a3kp">
- <di:waypoint x="525" y="324" />
- <di:waypoint x="609" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_1s87b92_di" bpmnElement="ServiceTask_1s87b92">
- <dc:Bounds x="923" y="300" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0bcgtzj_di" bpmnElement="SequenceFlow_0bcgtzj">
- <di:waypoint x="1023" y="340" />
- <di:waypoint x="1102" y="340" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_1gms128_di" bpmnElement="ServiceTask_1gms128">
- <dc:Bounds x="923" y="78" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1543qy7_di" bpmnElement="SequenceFlow_1543qy7">
- <di:waypoint x="1023" y="118" />
- <di:waypoint x="1102" y="118" />
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateNodeStatus.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateNodeStatus.bpmn
deleted file mode 100644
index c0de5e0352..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterCreateNodeStatus.bpmn
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ko0frn" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
- <bpmn:process id="MonitorSol003AdapterCreateNodeStatus" name="MonitorSol003AdapterCreateNodeStatus" isExecutable="true">
- <bpmn:startEvent id="StartEvent_0k0qfjb">
- <bpmn:outgoing>SequenceFlow_1miob62</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:subProcess id="SubProcess_10wotbc">
- <bpmn:incoming>SequenceFlow_1miob62</bpmn:incoming>
- <bpmn:startEvent id="StartEvent_0r9qf43">
- <bpmn:outgoing>SequenceFlow_1moaz0q</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:exclusiveGateway id="ExclusiveGateway_00xtlfj" default="SequenceFlow_1luu31f">
- <bpmn:incoming>SequenceFlow_0qvy3sn</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1rxbeqi</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1luu31f</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0xuznv9" name="Wait between checks" camunda:asyncAfter="true">
- <bpmn:incoming>SequenceFlow_1luu31f</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_09t51ao</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_0vrbrge">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT15S</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:intermediateCatchEvent>
- <bpmn:endEvent id="EndEvent_0tei3i9">
- <bpmn:incoming>SequenceFlow_1rxbeqi</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="ServiceTask_0y71su8" name="&#10;Get node status &#10;" camunda:asyncAfter="true" camunda:expression="${MonitorInstantiateSol003AdapterNodeTask.getNodeStatus(execution)}">
- <bpmn:incoming>SequenceFlow_1moaz0q</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_09t51ao</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0qvy3sn</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1rxbeqi" name="&#10;&#10;create vnf success&#10;&#10;" sourceRef="ExclusiveGateway_00xtlfj" targetRef="EndEvent_0tei3i9">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("createVnfNodeStatus")}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1luu31f" sourceRef="ExclusiveGateway_00xtlfj" targetRef="IntermediateCatchEvent_0xuznv9" />
- <bpmn:sequenceFlow id="SequenceFlow_1moaz0q" sourceRef="StartEvent_0r9qf43" targetRef="ServiceTask_0y71su8" />
- <bpmn:sequenceFlow id="SequenceFlow_0qvy3sn" sourceRef="ServiceTask_0y71su8" targetRef="ExclusiveGateway_00xtlfj" />
- <bpmn:sequenceFlow id="SequenceFlow_09t51ao" sourceRef="IntermediateCatchEvent_0xuznv9" targetRef="ServiceTask_0y71su8" />
- </bpmn:subProcess>
- <bpmn:endEvent id="EndEvent_1b83rci" name="Timeout Exception">
- <bpmn:incoming>SequenceFlow_0uiqnl8</bpmn:incoming>
- <bpmn:terminateEventDefinition id="TerminateEventDefinition_12rjfva" />
- </bpmn:endEvent>
- <bpmn:serviceTask id="ServiceTask_12qp0ty" name="&#10;Time Out Log Failure&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterNodeTask.timeOutLogFailue(execution)}">
- <bpmn:incoming>SequenceFlow_0qcc5x4</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0uiqnl8</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:boundaryEvent id="BoundaryEvent_1f5o5i9" name="Overall Wait" attachedToRef="SubProcess_10wotbc">
- <bpmn:outgoing>SequenceFlow_0qcc5x4</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_1t3ya63">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1miob62" sourceRef="StartEvent_0k0qfjb" targetRef="SubProcess_10wotbc" />
- <bpmn:sequenceFlow id="SequenceFlow_0uiqnl8" sourceRef="ServiceTask_12qp0ty" targetRef="EndEvent_1b83rci" />
- <bpmn:sequenceFlow id="SequenceFlow_0qcc5x4" sourceRef="BoundaryEvent_1f5o5i9" targetRef="ServiceTask_12qp0ty" />
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MonitorSol003AdapterCreateNodeStatus">
- <bpmndi:BPMNShape id="StartEvent_0k0qfjb_di" bpmnElement="StartEvent_0k0qfjb">
- <dc:Bounds x="155" y="159" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_10wotbc_di" bpmnElement="SubProcess_10wotbc" isExpanded="true">
- <dc:Bounds x="293" y="77" width="523" height="200" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1b83rci_di" bpmnElement="EndEvent_1b83rci">
- <dc:Bounds x="1096" y="151" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1089" y="111" width="49" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_12qp0ty_di" bpmnElement="ServiceTask_12qp0ty">
- <dc:Bounds x="917" y="129" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BoundaryEvent_1f5o5i9_di" bpmnElement="BoundaryEvent_1f5o5i9">
- <dc:Bounds x="800" y="151" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="788" y="190" width="61" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1miob62_di" bpmnElement="SequenceFlow_1miob62">
- <di:waypoint x="191" y="177" />
- <di:waypoint x="293" y="177" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0uiqnl8_di" bpmnElement="SequenceFlow_0uiqnl8">
- <di:waypoint x="1017" y="169" />
- <di:waypoint x="1096" y="169" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0qcc5x4_di" bpmnElement="SequenceFlow_0qcc5x4">
- <di:waypoint x="836" y="169" />
- <di:waypoint x="917" y="169" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_0r9qf43_di" bpmnElement="StartEvent_0r9qf43">
- <dc:Bounds x="324" y="135" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_00xtlfj_di" bpmnElement="ExclusiveGateway_00xtlfj" isMarkerVisible="true">
- <dc:Bounds x="603" y="128" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="IntermediateCatchEvent_0xuznv9_di" bpmnElement="IntermediateCatchEvent_0xuznv9">
- <dc:Bounds x="544" y="207" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="532" y="250" width="66" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0tei3i9_di" bpmnElement="EndEvent_0tei3i9">
- <dc:Bounds x="716" y="135" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_0y71su8_di" bpmnElement="ServiceTask_0y71su8">
- <dc:Bounds x="412" y="113" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1rxbeqi_di" bpmnElement="SequenceFlow_1rxbeqi">
- <di:waypoint x="653" y="153" />
- <di:waypoint x="716" y="153" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="660" y="135" width="50" height="80" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1luu31f_di" bpmnElement="SequenceFlow_1luu31f">
- <di:waypoint x="628" y="178" />
- <di:waypoint x="628" y="225" />
- <di:waypoint x="580" y="225" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1moaz0q_di" bpmnElement="SequenceFlow_1moaz0q">
- <di:waypoint x="360" y="153" />
- <di:waypoint x="412" y="153" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0qvy3sn_di" bpmnElement="SequenceFlow_0qvy3sn">
- <di:waypoint x="512" y="153" />
- <di:waypoint x="603" y="153" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_09t51ao_di" bpmnElement="SequenceFlow_09t51ao">
- <di:waypoint x="544" y="225" />
- <di:waypoint x="451" y="225" />
- <di:waypoint x="452" y="193" />
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateJob.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateJob.bpmn
deleted file mode 100644
index 1181a497b2..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateJob.bpmn
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_12gnsyw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="MonitorSol003AdapterTerminateJob" name="MonitorSol003AdapterTerminateJob" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>SequenceFlow_1x3tbl0</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_0rf1gde">
- <bpmn:incoming>SequenceFlow_1543qy7</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:subProcess id="SubProcess_19j0v63">
- <bpmn:incoming>SequenceFlow_1x3tbl0</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1v4yr3f</bpmn:outgoing>
- <bpmn:startEvent id="StartEvent_01r97z2">
- <bpmn:outgoing>SequenceFlow_0s1plu9</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:exclusiveGateway id="ExclusiveGateway_1hkl6yy" default="SequenceFlow_1vmxw9g">
- <bpmn:incoming>SequenceFlow_153a3kp</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1vmxw9g</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_0is7myf</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1besn3n" name="Wait between checks" camunda:asyncAfter="true">
- <bpmn:incoming>SequenceFlow_1vmxw9g</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0etw572</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_0qgh11t">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT15S</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:intermediateCatchEvent>
- <bpmn:endEvent id="EndEvent_1ohsce9">
- <bpmn:incoming>SequenceFlow_0is7myf</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0s1plu9" sourceRef="StartEvent_01r97z2" targetRef="ServiceTask_17jlnng" />
- <bpmn:sequenceFlow id="SequenceFlow_0etw572" sourceRef="IntermediateCatchEvent_1besn3n" targetRef="ServiceTask_17jlnng" />
- <bpmn:serviceTask id="ServiceTask_17jlnng" name="&#10;Get Current Operation Status&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterTerminateJobTask.getCurrentOperationStatus(execution)}">
- <bpmn:incoming>SequenceFlow_0etw572</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_0s1plu9</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_153a3kp</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1vmxw9g" sourceRef="ExclusiveGateway_1hkl6yy" targetRef="IntermediateCatchEvent_1besn3n" />
- <bpmn:sequenceFlow id="SequenceFlow_0is7myf" sourceRef="ExclusiveGateway_1hkl6yy" targetRef="EndEvent_1ohsce9">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${MonitorSol003AdapterCreateJobTask.hasOperationFinished(execution)}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_153a3kp" sourceRef="ServiceTask_17jlnng" targetRef="ExclusiveGateway_1hkl6yy" />
- </bpmn:subProcess>
- <bpmn:endEvent id="EndEvent_1w3t3t0" name="Timeout Exception">
- <bpmn:incoming>SequenceFlow_0bcgtzj</bpmn:incoming>
- <bpmn:terminateEventDefinition id="TerminateEventDefinition_0fjecl3" />
- </bpmn:endEvent>
- <bpmn:boundaryEvent id="BoundaryEvent_0xiabzp" name="Overall Wait" attachedToRef="SubProcess_19j0v63">
- <bpmn:outgoing>SequenceFlow_1i1o9sh</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_10kqw61">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1v4yr3f" sourceRef="SubProcess_19j0v63" targetRef="ServiceTask_1gms128" />
- <bpmn:sequenceFlow id="SequenceFlow_1i1o9sh" sourceRef="BoundaryEvent_0xiabzp" targetRef="ServiceTask_1s87b92" />
- <bpmn:sequenceFlow id="SequenceFlow_1x3tbl0" sourceRef="StartEvent_1" targetRef="SubProcess_19j0v63" />
- <bpmn:serviceTask id="ServiceTask_1s87b92" name="&#10;Time Out Log Failure&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterTerminateJobTask.timeOutLogFailure(execution)}">
- <bpmn:incoming>SequenceFlow_1i1o9sh</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0bcgtzj</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_0bcgtzj" sourceRef="ServiceTask_1s87b92" targetRef="EndEvent_1w3t3t0" />
- <bpmn:serviceTask id="ServiceTask_1gms128" name="&#10;Check if operation was successful&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterTerminateJobTask.checkIfOperationWasSuccessful(execution)}">
- <bpmn:incoming>SequenceFlow_1v4yr3f</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1543qy7</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1543qy7" sourceRef="ServiceTask_1gms128" targetRef="EndEvent_0rf1gde" />
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MonitorSol003AdapterTerminateJob">
- <bpmndi:BPMNEdge id="SequenceFlow_1543qy7_di" bpmnElement="SequenceFlow_1543qy7">
- <di:waypoint x="1023" y="118" />
- <di:waypoint x="1102" y="118" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0bcgtzj_di" bpmnElement="SequenceFlow_0bcgtzj">
- <di:waypoint x="1023" y="340" />
- <di:waypoint x="1102" y="340" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1x3tbl0_di" bpmnElement="SequenceFlow_1x3tbl0">
- <di:waypoint x="197" y="348" />
- <di:waypoint x="301" y="348" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1i1o9sh_di" bpmnElement="SequenceFlow_1i1o9sh">
- <di:waypoint x="842" y="340" />
- <di:waypoint x="923" y="340" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1v4yr3f_di" bpmnElement="SequenceFlow_1v4yr3f">
- <di:waypoint x="563" y="248" />
- <di:waypoint x="563" y="118" />
- <di:waypoint x="923" y="118" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="161" y="330" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0rf1gde_di" bpmnElement="EndEvent_0rf1gde">
- <dc:Bounds x="1102" y="100" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_19j0v63_di" bpmnElement="SubProcess_19j0v63" isExpanded="true">
- <dc:Bounds x="301" y="248" width="523" height="200" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_153a3kp_di" bpmnElement="SequenceFlow_153a3kp">
- <di:waypoint x="525" y="324" />
- <di:waypoint x="609" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0is7myf_di" bpmnElement="SequenceFlow_0is7myf">
- <di:waypoint x="659" y="324" />
- <di:waypoint x="722" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1vmxw9g_di" bpmnElement="SequenceFlow_1vmxw9g">
- <di:waypoint x="634" y="349" />
- <di:waypoint x="634" y="396" />
- <di:waypoint x="586" y="396" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0etw572_di" bpmnElement="SequenceFlow_0etw572">
- <di:waypoint x="550" y="396" />
- <di:waypoint x="486" y="396" />
- <di:waypoint x="486" y="367" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0s1plu9_di" bpmnElement="SequenceFlow_0s1plu9">
- <di:waypoint x="366" y="324" />
- <di:waypoint x="425" y="324" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_01r97z2_di" bpmnElement="StartEvent_01r97z2">
- <dc:Bounds x="330" y="306" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_1hkl6yy_di" bpmnElement="ExclusiveGateway_1hkl6yy" isMarkerVisible="true">
- <dc:Bounds x="609" y="299" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="IntermediateCatchEvent_1besn3n_di" bpmnElement="IntermediateCatchEvent_1besn3n">
- <dc:Bounds x="550" y="378" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="537" y="421" width="66" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1ohsce9_di" bpmnElement="EndEvent_1ohsce9">
- <dc:Bounds x="722" y="306" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_17jlnng_di" bpmnElement="ServiceTask_17jlnng">
- <dc:Bounds x="425" y="284" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1w3t3t0_di" bpmnElement="EndEvent_1w3t3t0">
- <dc:Bounds x="1102" y="322" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1095" y="282" width="49" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_1s87b92_di" bpmnElement="ServiceTask_1s87b92">
- <dc:Bounds x="923" y="300" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_1gms128_di" bpmnElement="ServiceTask_1gms128">
- <dc:Bounds x="923" y="78" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BoundaryEvent_0xiabzp_di" bpmnElement="BoundaryEvent_0xiabzp">
- <dc:Bounds x="806" y="322" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="794" y="361" width="61" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateNodeStatus.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateNodeStatus.bpmn
deleted file mode 100644
index 5629ce81fa..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/MonitorSol003AdapterTerminateNodeStatus.bpmn
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1ko0frn" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="MonitorSol003AdapterTerminateNodeStatus" name="MonitorSol003AdapterTerminateNodeStatus" isExecutable="true">
- <bpmn:startEvent id="StartEvent_0k0qfjb">
- <bpmn:outgoing>SequenceFlow_1miob62</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:subProcess id="SubProcess_10wotbc">
- <bpmn:incoming>SequenceFlow_1miob62</bpmn:incoming>
- <bpmn:startEvent id="StartEvent_0r9qf43">
- <bpmn:outgoing>SequenceFlow_1moaz0q</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:exclusiveGateway id="ExclusiveGateway_00xtlfj" default="SequenceFlow_1luu31f">
- <bpmn:incoming>SequenceFlow_0qvy3sn</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1rxbeqi</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1luu31f</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0xuznv9" name="Wait between checks" camunda:asyncAfter="true">
- <bpmn:incoming>SequenceFlow_1luu31f</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_09t51ao</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_0vrbrge">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT15S</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:intermediateCatchEvent>
- <bpmn:endEvent id="EndEvent_0tei3i9">
- <bpmn:incoming>SequenceFlow_1rxbeqi</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="ServiceTask_0y71su8" name="&#10;Get node status &#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterTerminateNodeTask.getNodeStatus(execution)}">
- <bpmn:incoming>SequenceFlow_1moaz0q</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_09t51ao</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0qvy3sn</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="SequenceFlow_1rxbeqi" name="&#10;&#10;terminate vnf success&#10;&#10;" sourceRef="ExclusiveGateway_00xtlfj" targetRef="EndEvent_0tei3i9">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("deleteVnfNodeStatus")}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1luu31f" sourceRef="ExclusiveGateway_00xtlfj" targetRef="IntermediateCatchEvent_0xuznv9" />
- <bpmn:sequenceFlow id="SequenceFlow_1moaz0q" sourceRef="StartEvent_0r9qf43" targetRef="ServiceTask_0y71su8" />
- <bpmn:sequenceFlow id="SequenceFlow_0qvy3sn" sourceRef="ServiceTask_0y71su8" targetRef="ExclusiveGateway_00xtlfj" />
- <bpmn:sequenceFlow id="SequenceFlow_09t51ao" sourceRef="IntermediateCatchEvent_0xuznv9" targetRef="ServiceTask_0y71su8" />
- </bpmn:subProcess>
- <bpmn:endEvent id="EndEvent_1b83rci" name="Timeout Exception">
- <bpmn:incoming>SequenceFlow_0uiqnl8</bpmn:incoming>
- <bpmn:terminateEventDefinition id="TerminateEventDefinition_12rjfva" />
- </bpmn:endEvent>
- <bpmn:serviceTask id="ServiceTask_12qp0ty" name="&#10;Time Out Log Failure&#10;" camunda:asyncAfter="true" camunda:expression="${MonitorSol003AdapterNodeTask.timeOutLogFailue(execution)}">
- <bpmn:incoming>SequenceFlow_0qcc5x4</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0uiqnl8</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:boundaryEvent id="BoundaryEvent_1f5o5i9" name="Overall Wait" attachedToRef="SubProcess_10wotbc">
- <bpmn:outgoing>SequenceFlow_0qcc5x4</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_1t3ya63">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1miob62" sourceRef="StartEvent_0k0qfjb" targetRef="SubProcess_10wotbc" />
- <bpmn:sequenceFlow id="SequenceFlow_0uiqnl8" sourceRef="ServiceTask_12qp0ty" targetRef="EndEvent_1b83rci" />
- <bpmn:sequenceFlow id="SequenceFlow_0qcc5x4" sourceRef="BoundaryEvent_1f5o5i9" targetRef="ServiceTask_12qp0ty" />
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MonitorSol003AdapterTerminateNodeStatus">
- <bpmndi:BPMNEdge id="SequenceFlow_0qcc5x4_di" bpmnElement="SequenceFlow_0qcc5x4">
- <di:waypoint x="836" y="169" />
- <di:waypoint x="917" y="169" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0uiqnl8_di" bpmnElement="SequenceFlow_0uiqnl8">
- <di:waypoint x="1017" y="169" />
- <di:waypoint x="1096" y="169" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1miob62_di" bpmnElement="SequenceFlow_1miob62">
- <di:waypoint x="191" y="177" />
- <di:waypoint x="293" y="177" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_0k0qfjb_di" bpmnElement="StartEvent_0k0qfjb">
- <dc:Bounds x="155" y="159" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_10wotbc_di" bpmnElement="SubProcess_10wotbc" isExpanded="true">
- <dc:Bounds x="293" y="77" width="523" height="200" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_09t51ao_di" bpmnElement="SequenceFlow_09t51ao">
- <di:waypoint x="544" y="225" />
- <di:waypoint x="451" y="225" />
- <di:waypoint x="452" y="193" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0qvy3sn_di" bpmnElement="SequenceFlow_0qvy3sn">
- <di:waypoint x="512" y="153" />
- <di:waypoint x="603" y="153" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1moaz0q_di" bpmnElement="SequenceFlow_1moaz0q">
- <di:waypoint x="360" y="153" />
- <di:waypoint x="412" y="153" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1luu31f_di" bpmnElement="SequenceFlow_1luu31f">
- <di:waypoint x="628" y="178" />
- <di:waypoint x="628" y="225" />
- <di:waypoint x="580" y="225" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1rxbeqi_di" bpmnElement="SequenceFlow_1rxbeqi">
- <di:waypoint x="653" y="153" />
- <di:waypoint x="716" y="153" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="653" y="135" width="65" height="80" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_0r9qf43_di" bpmnElement="StartEvent_0r9qf43">
- <dc:Bounds x="324" y="135" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_00xtlfj_di" bpmnElement="ExclusiveGateway_00xtlfj" isMarkerVisible="true">
- <dc:Bounds x="603" y="128" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="IntermediateCatchEvent_0xuznv9_di" bpmnElement="IntermediateCatchEvent_0xuznv9">
- <dc:Bounds x="544" y="207" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="532" y="250" width="66" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0tei3i9_di" bpmnElement="EndEvent_0tei3i9">
- <dc:Bounds x="716" y="135" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_0y71su8_di" bpmnElement="ServiceTask_0y71su8">
- <dc:Bounds x="412" y="113" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1b83rci_di" bpmnElement="EndEvent_1b83rci">
- <dc:Bounds x="1096" y="151" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1089" y="111" width="49" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_12qp0ty_di" bpmnElement="ServiceTask_12qp0ty">
- <dc:Bounds x="917" y="129" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BoundaryEvent_1f5o5i9_di" bpmnElement="BoundaryEvent_1f5o5i9">
- <dc:Bounds x="800" y="151" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="788" y="190" width="61" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateNs.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateNs.bpmn
deleted file mode 100644
index e971f6acf0..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateNs.bpmn
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0mdda96" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="TerminateNs" name="TerminateNs" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1" name="Start Process">
- <bpmn:outgoing>SequenceFlow_16k0f61</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:sequenceFlow id="SequenceFlow_16k0f61" sourceRef="StartEvent_1" targetRef="Activity_194tqy0" />
- <bpmn:serviceTask id="Task_0opnwx0" name="Update NS Instance status to TERMINATING" camunda:expression="${TerminateNsTask.updateNsInstanceStatusToTerminating(execution)}">
- <bpmn:incoming>Flow_04pxtdd</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0bdznyp</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:endEvent id="EndEvent_0szswbo" name="End Process">
- <bpmn:incoming>Flow_1pcu8aa</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0bdznyp" sourceRef="Task_0opnwx0" targetRef="Activity_1kikjaf" />
- <bpmn:serviceTask id="Activity_194tqy0" name="Set Job Status to STARTED" camunda:asyncBefore="true" camunda:expression="${TerminateNsTask.setJobStatusToStarted(execution)}">
- <bpmn:incoming>SequenceFlow_16k0f61</bpmn:incoming>
- <bpmn:outgoing>Flow_04pxtdd</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_04pxtdd" sourceRef="Activity_194tqy0" targetRef="Task_0opnwx0" />
- <bpmn:subProcess id="Activity_0pjxszh" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_1rpzcl3" name="error">
- <bpmn:outgoing>Flow_07bh7l7</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0m2e0oa" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_1fcw3ei" name="end">
- <bpmn:incoming>Flow_1wa1jpl</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_0ddja9m" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${TerminateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_0n3dai5</bpmn:incoming>
- <bpmn:outgoing>Flow_1wa1jpl</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1wa1jpl" sourceRef="Activity_0ddja9m" targetRef="Event_1fcw3ei" />
- <bpmn:sequenceFlow id="Flow_07bh7l7" sourceRef="Event_1rpzcl3" targetRef="Activity_1miy3hw" />
- <bpmn:serviceTask id="Activity_1miy3hw" name="Update NSLcmOpOcc operation status to FAILED" camunda:asyncBefore="true" camunda:expression="${TerminateNsTask.updateNsLcmOpOccStatusToFailed(execution)}">
- <bpmn:incoming>Flow_07bh7l7</bpmn:incoming>
- <bpmn:outgoing>Flow_0n3dai5</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0n3dai5" sourceRef="Activity_1miy3hw" targetRef="Activity_0ddja9m" />
- </bpmn:subProcess>
- <bpmn:subProcess id="Activity_0mtscwq" name="Java Exception Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_0lqr6al" name="error">
- <bpmn:outgoing>Flow_05lo00r</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_02lwl19" errorRef="Error_0jsct8p" camunda:errorCodeVariable="BPMN_javaExpCode" camunda:errorMessageVariable="BPMN_javaExpMsg" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_05ty7c4">
- <bpmn:incoming>Flow_16aryg5</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_1ezu7d4" name="Set Job Status to ERROR" camunda:asyncBefore="true" camunda:expression="${TerminateNsTask.setJobStatusToError(execution)}">
- <bpmn:incoming>Flow_09zcw2a</bpmn:incoming>
- <bpmn:outgoing>Flow_16aryg5</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_16aryg5" sourceRef="Activity_1ezu7d4" targetRef="Event_05ty7c4" />
- <bpmn:sequenceFlow id="Flow_05lo00r" sourceRef="Event_0lqr6al" targetRef="Activity_17leldb" />
- <bpmn:serviceTask id="Activity_17leldb" name="Update NSLcmOpOcc operation status to FAILED" camunda:asyncBefore="true" camunda:expression="${TerminateNsTask.updateNsLcmOpOccStatusToFailed(execution)}">
- <bpmn:incoming>Flow_05lo00r</bpmn:incoming>
- <bpmn:outgoing>Flow_09zcw2a</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_09zcw2a" sourceRef="Activity_17leldb" targetRef="Activity_1ezu7d4" />
- </bpmn:subProcess>
- <bpmn:serviceTask id="Activity_1w09i1k" name="Set Job Status to FINISHED" camunda:expression="${TerminateNsTask.setJobStatusToFinished(execution)}">
- <bpmn:incoming>Flow_1i36dw4</bpmn:incoming>
- <bpmn:outgoing>Flow_1pcu8aa</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1pcu8aa" sourceRef="Activity_1w09i1k" targetRef="EndEvent_0szswbo" />
- <bpmn:callActivity id="Activity_1b2s2wr" name="Terminate Vnfs" calledElement="TerminateVnf">
- <bpmn:extensionElements>
- <camunda:in source="jobId" target="jobId" />
- <camunda:in source="NsInstanceId" target="NsInstanceId" />
- <camunda:in source="vnfId" target="vnfId" />
- </bpmn:extensionElements>
- <bpmn:incoming>Flow_01ju1mj</bpmn:incoming>
- <bpmn:outgoing>Flow_0mi4nqa</bpmn:outgoing>
- <bpmn:multiInstanceLoopCharacteristics camunda:asyncAfter="true" camunda:collection="${nfvoNfInstIds}" camunda:elementVariable="vnfId" />
- </bpmn:callActivity>
- <bpmn:boundaryEvent id="Event_0rbb817" name="Overall Wait" attachedToRef="Activity_1b2s2wr">
- <bpmn:outgoing>Flow_17zn7we</bpmn:outgoing>
- <bpmn:timerEventDefinition id="TimerEventDefinition_13ud1f4">
- <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT3H</bpmn:timeDuration>
- </bpmn:timerEventDefinition>
- </bpmn:boundaryEvent>
- <bpmn:sequenceFlow id="Flow_17zn7we" sourceRef="Event_0rbb817" targetRef="Activity_16z66xm" />
- <bpmn:serviceTask id="Activity_1kikjaf" name="Get Vnf IDs in NS" camunda:expression="${TerminateNsTask.getVnfIdsInNs(execution)}">
- <bpmn:incoming>SequenceFlow_0bdznyp</bpmn:incoming>
- <bpmn:outgoing>Flow_01ju1mj</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_01ju1mj" sourceRef="Activity_1kikjaf" targetRef="Activity_1b2s2wr" />
- <bpmn:serviceTask id="Activity_16cvdbw" name="Update NS Instance status to NOT_INSTANTIATED" camunda:expression="${TerminateNsTask.updateNsInstanceStatusToNotInstantiated(execution)}">
- <bpmn:incoming>Flow_1nieng0</bpmn:incoming>
- <bpmn:outgoing>Flow_0xptc0r</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0xptc0r" sourceRef="Activity_16cvdbw" targetRef="Activity_0gkpdft" />
- <bpmn:endEvent id="Event_1e4bwip">
- <bpmn:incoming>Flow_10oprxr</bpmn:incoming>
- <bpmn:incoming>Flow_1p21p1m</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0vg6v5r" errorRef="Error_0jsct8p" />
- </bpmn:endEvent>
- <bpmn:exclusiveGateway id="Gateway_0nxf0rv" name="is Successful?">
- <bpmn:incoming>Flow_15m4nm1</bpmn:incoming>
- <bpmn:outgoing>Flow_1nieng0</bpmn:outgoing>
- <bpmn:outgoing>Flow_10oprxr</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="Flow_1nieng0" name="Yes" sourceRef="Gateway_0nxf0rv" targetRef="Activity_16cvdbw">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{isNsTerminationSuccessful}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:serviceTask id="Activity_14iwa8x" name="Check if VNF Termination was Successful" camunda:expression="${TerminateNsTask.checkIfVnfTerminationWasSuccessful(execution)}">
- <bpmn:incoming>Flow_0mi4nqa</bpmn:incoming>
- <bpmn:outgoing>Flow_15m4nm1</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0mi4nqa" sourceRef="Activity_1b2s2wr" targetRef="Activity_14iwa8x" />
- <bpmn:sequenceFlow id="Flow_15m4nm1" sourceRef="Activity_14iwa8x" targetRef="Gateway_0nxf0rv" />
- <bpmn:serviceTask id="Activity_16z66xm" name="Log TimeOut" camunda:expression="${TerminateNsTask.logTimeOut(execution)}">
- <bpmn:incoming>Flow_17zn7we</bpmn:incoming>
- <bpmn:outgoing>Flow_1p21p1m</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_10oprxr" name="No" sourceRef="Gateway_0nxf0rv" targetRef="Event_1e4bwip">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{not isNsTerminationSuccessful}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="Flow_1p21p1m" sourceRef="Activity_16z66xm" targetRef="Event_1e4bwip" />
- <bpmn:serviceTask id="Activity_0gkpdft" name="Update NSLcmOpOcc operation status to COMPLETED" camunda:expression="${TerminateNsTask.updateNsLcmOpOccStatusToCompleted(execution)}">
- <bpmn:incoming>Flow_0xptc0r</bpmn:incoming>
- <bpmn:outgoing>Flow_1i36dw4</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1i36dw4" sourceRef="Activity_0gkpdft" targetRef="Activity_1w09i1k" />
- </bpmn:process>
- <bpmn:error id="Error_0jsct8p" name="NsWorkflowProcessingException" errorCode="TERMINATE_NS_WORKFLOW_PROCESSING_EXCEPTION" />
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="TerminateNs">
- <bpmndi:BPMNEdge id="Flow_1i36dw4_di" bpmnElement="Flow_1i36dw4">
- <di:waypoint x="1680" y="121" />
- <di:waypoint x="1720" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1p21p1m_di" bpmnElement="Flow_1p21p1m">
- <di:waypoint x="1110" y="270" />
- <di:waypoint x="1332" y="270" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_10oprxr_di" bpmnElement="Flow_10oprxr">
- <di:waypoint x="1350" y="146" />
- <di:waypoint x="1350" y="252" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1358" y="196" width="14" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_15m4nm1_di" bpmnElement="Flow_15m4nm1">
- <di:waypoint x="1110" y="121" />
- <di:waypoint x="1325" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0mi4nqa_di" bpmnElement="Flow_0mi4nqa">
- <di:waypoint x="790" y="121" />
- <di:waypoint x="1010" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1nieng0_di" bpmnElement="Flow_1nieng0">
- <di:waypoint x="1375" y="121" />
- <di:waypoint x="1430" y="121" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1393" y="103" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0xptc0r_di" bpmnElement="Flow_0xptc0r">
- <di:waypoint x="1530" y="121" />
- <di:waypoint x="1580" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_01ju1mj_di" bpmnElement="Flow_01ju1mj">
- <di:waypoint x="650" y="121" />
- <di:waypoint x="690" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_17zn7we_di" bpmnElement="Flow_17zn7we">
- <di:waypoint x="770" y="179" />
- <di:waypoint x="770" y="270" />
- <di:waypoint x="1010" y="270" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1pcu8aa_di" bpmnElement="Flow_1pcu8aa">
- <di:waypoint x="1820" y="121" />
- <di:waypoint x="1862" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_04pxtdd_di" bpmnElement="Flow_04pxtdd">
- <di:waypoint x="360" y="121" />
- <di:waypoint x="410" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0bdznyp_di" bpmnElement="SequenceFlow_0bdznyp">
- <di:waypoint x="510" y="121" />
- <di:waypoint x="550" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_16k0f61_di" bpmnElement="SequenceFlow_16k0f61">
- <di:waypoint x="208" y="121" />
- <di:waypoint x="260" y="121" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="172" y="103" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="157" y="146" width="67" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_1y7xfqt_di" bpmnElement="Task_0opnwx0">
- <dc:Bounds x="410" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0szswbo_di" bpmnElement="EndEvent_0szswbo">
- <dc:Bounds x="1862" y="103" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1848" y="79" width="63" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_194tqy0_di" bpmnElement="Activity_194tqy0">
- <dc:Bounds x="260" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0pjxszh_di" bpmnElement="Activity_0pjxszh" isExpanded="true">
- <dc:Bounds x="380" y="310" width="510" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_0n3dai5_di" bpmnElement="Flow_0n3dai5">
- <di:waypoint x="600" y="373" />
- <di:waypoint x="660" y="373" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_07bh7l7_di" bpmnElement="Flow_07bh7l7">
- <di:waypoint x="438" y="373" />
- <di:waypoint x="500" y="373" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1wa1jpl_di" bpmnElement="Flow_1wa1jpl">
- <di:waypoint x="760" y="373" />
- <di:waypoint x="822" y="373" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_1rpzcl3_di" bpmnElement="Event_1rpzcl3">
- <dc:Bounds x="402" y="355" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="408" y="398" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_1fcw3ei_di" bpmnElement="Event_1fcw3ei">
- <dc:Bounds x="822" y="355" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="832" y="397" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0ddja9m_di" bpmnElement="Activity_0ddja9m">
- <dc:Bounds x="660" y="333" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1miy3hw_di" bpmnElement="Activity_1miy3hw">
- <dc:Bounds x="500" y="333" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0mtscwq_di" bpmnElement="Activity_0mtscwq" isExpanded="true">
- <dc:Bounds x="380" y="480" width="510" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_09zcw2a_di" bpmnElement="Flow_09zcw2a">
- <di:waypoint x="600" y="543" />
- <di:waypoint x="660" y="543" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_05lo00r_di" bpmnElement="Flow_05lo00r">
- <di:waypoint x="438" y="543" />
- <di:waypoint x="500" y="543" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_16aryg5_di" bpmnElement="Flow_16aryg5">
- <di:waypoint x="760" y="543" />
- <di:waypoint x="822" y="543" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_0lqr6al_di" bpmnElement="Event_0lqr6al">
- <dc:Bounds x="402" y="525" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="409" y="568" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_05ty7c4_di" bpmnElement="Event_05ty7c4">
- <dc:Bounds x="822" y="525" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1ezu7d4_di" bpmnElement="Activity_1ezu7d4">
- <dc:Bounds x="660" y="503" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_17leldb_di" bpmnElement="Activity_17leldb">
- <dc:Bounds x="500" y="503" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1w09i1k_di" bpmnElement="Activity_1w09i1k">
- <dc:Bounds x="1720" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1xjmizv_di" bpmnElement="Activity_1b2s2wr">
- <dc:Bounds x="690" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1kikjaf_di" bpmnElement="Activity_1kikjaf">
- <dc:Bounds x="550" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_16cvdbw_di" bpmnElement="Activity_16cvdbw">
- <dc:Bounds x="1430" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_16umj30_di" bpmnElement="Event_1e4bwip">
- <dc:Bounds x="1332" y="252" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_0nxf0rv_di" bpmnElement="Gateway_0nxf0rv" isMarkerVisible="true">
- <dc:Bounds x="1325" y="96" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1320" y="66" width="71" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_14iwa8x_di" bpmnElement="Activity_14iwa8x">
- <dc:Bounds x="1010" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_16z66xm_di" bpmnElement="Activity_16z66xm">
- <dc:Bounds x="1010" y="230" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0gkpdft_di" bpmnElement="Activity_0gkpdft">
- <dc:Bounds x="1580" y="81" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0rbb817_di" bpmnElement="Event_0rbb817">
- <dc:Bounds x="752" y="143" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="700" y="183" width="60" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateVnf.bpmn b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateVnf.bpmn
deleted file mode 100644
index 994933f2ac..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/resources/TerminateVnf.bpmn
+++ /dev/null
@@ -1,171 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1uf6nd9" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
- <bpmn:process id="TerminateVnf" name="TerminateVnf" isExecutable="true">
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>Flow_02bjz2v</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:sequenceFlow id="Flow_02bjz2v" sourceRef="StartEvent_1" targetRef="Activity_1cluqgp" />
- <bpmn:endEvent id="Event_14qdixj">
- <bpmn:incoming>Flow_1egtf3w</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_1cluqgp" name="Check If NF Instance (VNF) exists in DB" camunda:expression="${TerminateVnfTask.checkIfNfInstanceExistsInDb(execution)}">
- <bpmn:incoming>Flow_02bjz2v</bpmn:incoming>
- <bpmn:outgoing>Flow_123uagz</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_123uagz" sourceRef="Activity_1cluqgp" targetRef="Activity_17vixcx" />
- <bpmn:serviceTask id="ServiceTask_0iry5yw" name="&#10;Invoke VNFM Adapter&#10;" camunda:asyncAfter="true" camunda:expression="${TerminateVnfTask.invokeTerminateRequest(execution)}">
- <bpmn:incoming>Flow_0in3hgl</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0xzptc2</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:callActivity id="CallActivity_1yilxx3" name="Monitor Sol003 Adapter Terminate Job" calledElement="MonitorSol003AdapterTerminateJob">
- <bpmn:extensionElements>
- <camunda:in source="jobId" target="jobId" />
- <camunda:in source="deleteVnfResponse" target="deleteVnfResponse" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_0xzptc2</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_053tvct</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:sequenceFlow id="SequenceFlow_0xzptc2" sourceRef="ServiceTask_0iry5yw" targetRef="CallActivity_1yilxx3" />
- <bpmn:sequenceFlow id="SequenceFlow_053tvct" sourceRef="CallActivity_1yilxx3" targetRef="Activity_0wgjtoy" />
- <bpmn:serviceTask id="Activity_0g3dip7" name="Update NF Instance (VNF) Status to NOT_INSTANTIATED" camunda:expression="${TerminateVnfTask.updateNfInstanceStatusToNotInstantiated(execution)}">
- <bpmn:incoming>Flow_1rw8pwu</bpmn:incoming>
- <bpmn:outgoing>Flow_0srinh7</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0srinh7" sourceRef="Activity_0g3dip7" targetRef="Activity_1vptrrr" />
- <bpmn:subProcess id="Activity_0qtgdm9" name="Error Handling" triggeredByEvent="true">
- <bpmn:startEvent id="Event_08zcwc2" name="error">
- <bpmn:outgoing>Flow_06q1m6i</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1ppvn77" />
- </bpmn:startEvent>
- <bpmn:endEvent id="Event_1wkm29u" name="end">
- <bpmn:incoming>Flow_0anjylz</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:serviceTask id="Activity_0ltxcii" name="Update NF Instance (VNF) Status to FAILED" camunda:asyncBefore="true" camunda:expression="${TerminateVnfTask.updateNfInstanceStatusToFailed(execution)}">
- <bpmn:incoming>Flow_06q1m6i</bpmn:incoming>
- <bpmn:outgoing>Flow_0anjylz</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_06q1m6i" sourceRef="Event_08zcwc2" targetRef="Activity_0ltxcii" />
- <bpmn:sequenceFlow id="Flow_0anjylz" sourceRef="Activity_0ltxcii" targetRef="Event_1wkm29u" />
- </bpmn:subProcess>
- <bpmn:callActivity id="Activity_0wgjtoy" name="Monitor Sol003 Adapter Terminate Node Status" calledElement="MonitorSol003AdapterTerminateNodeStatus">
- <bpmn:extensionElements>
- <camunda:in source="NF_INST_ID" target="NF_INST_ID" />
- <camunda:in source="deleteVnfResponse" target="deleteVnfResponse" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_053tvct</bpmn:incoming>
- <bpmn:outgoing>Flow_1wfvdmt</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:sequenceFlow id="Flow_1wfvdmt" sourceRef="Activity_0wgjtoy" targetRef="Activity_0lulaof" />
- <bpmn:sequenceFlow id="Flow_1egtf3w" sourceRef="Activity_1vptrrr" targetRef="Event_14qdixj" />
- <bpmn:serviceTask id="Activity_1vptrrr" name="Delete NF Instance (VNF) record from DB" camunda:expression="${TerminateVnfTask.deleteNfInstanceFromDb(execution)}">
- <bpmn:incoming>Flow_0srinh7</bpmn:incoming>
- <bpmn:outgoing>Flow_1egtf3w</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_0in3hgl" sourceRef="Activity_17vixcx" targetRef="ServiceTask_0iry5yw" />
- <bpmn:serviceTask id="Activity_17vixcx" name="Update NF Instance (VNF) Status to TERMINATING" camunda:expression="${TerminateVnfTask.updateNfInstanceStatusToTerminating(execution)}">
- <bpmn:incoming>Flow_123uagz</bpmn:incoming>
- <bpmn:outgoing>Flow_0in3hgl</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:serviceTask id="Activity_0lulaof" name="Delete Generic VNF From AAI" camunda:expression="${TerminateVnfTask.deleteGenericVnfFromAai(execution)}">
- <bpmn:incoming>Flow_1wfvdmt</bpmn:incoming>
- <bpmn:outgoing>Flow_1rw8pwu</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:sequenceFlow id="Flow_1rw8pwu" sourceRef="Activity_0lulaof" targetRef="Activity_0g3dip7" />
- </bpmn:process>
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="TerminateVnf">
- <bpmndi:BPMNEdge id="Flow_0in3hgl_di" bpmnElement="Flow_0in3hgl">
- <di:waypoint x="490" y="117" />
- <di:waypoint x="540" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1egtf3w_di" bpmnElement="Flow_1egtf3w">
- <di:waypoint x="1370" y="117" />
- <di:waypoint x="1432" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1wfvdmt_di" bpmnElement="Flow_1wfvdmt">
- <di:waypoint x="940" y="117" />
- <di:waypoint x="990" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0srinh7_di" bpmnElement="Flow_0srinh7">
- <di:waypoint x="1230" y="117" />
- <di:waypoint x="1270" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_053tvct_di" bpmnElement="SequenceFlow_053tvct">
- <di:waypoint x="790" y="117" />
- <di:waypoint x="840" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0xzptc2_di" bpmnElement="SequenceFlow_0xzptc2">
- <di:waypoint x="640" y="117" />
- <di:waypoint x="690" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_123uagz_di" bpmnElement="Flow_123uagz">
- <di:waypoint x="350" y="117" />
- <di:waypoint x="390" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_02bjz2v_di" bpmnElement="Flow_02bjz2v">
- <di:waypoint x="215" y="117" />
- <di:waypoint x="250" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_1rw8pwu_di" bpmnElement="Flow_1rw8pwu">
- <di:waypoint x="1090" y="117" />
- <di:waypoint x="1130" y="117" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="179" y="99" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1cluqgp_di" bpmnElement="Activity_1cluqgp">
- <dc:Bounds x="250" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_0iry5yw_di" bpmnElement="ServiceTask_0iry5yw">
- <dc:Bounds x="540" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="CallActivity_1yilxx3_di" bpmnElement="CallActivity_1yilxx3">
- <dc:Bounds x="690" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0wgjtoy_di" bpmnElement="Activity_0wgjtoy">
- <dc:Bounds x="840" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0lulaof_di" bpmnElement="Activity_0lulaof">
- <dc:Bounds x="990" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0g3dip7_di" bpmnElement="Activity_0g3dip7">
- <dc:Bounds x="1130" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0fsaanz_di" bpmnElement="Activity_1vptrrr">
- <dc:Bounds x="1270" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_14qdixj_di" bpmnElement="Event_14qdixj">
- <dc:Bounds x="1432" y="99" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0qtgdm9_di" bpmnElement="Activity_0qtgdm9" isExpanded="true">
- <dc:Bounds x="430" y="270" width="438" height="130" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="Flow_0anjylz_di" bpmnElement="Flow_0anjylz">
- <di:waypoint x="680" y="333" />
- <di:waypoint x="812" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_06q1m6i_di" bpmnElement="Flow_06q1m6i">
- <di:waypoint x="488" y="333" />
- <di:waypoint x="580" y="333" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_08zcwc2_di" bpmnElement="Event_08zcwc2">
- <dc:Bounds x="452" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="458" y="358" width="24" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_1wkm29u_di" bpmnElement="Event_1wkm29u">
- <dc:Bounds x="812" y="315" width="36" height="36" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="822" y="357" width="19" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0ltxcii_di" bpmnElement="Activity_0ltxcii">
- <dc:Bounds x="580" y="293" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_08pcuhq_di" bpmnElement="Activity_17vixcx">
- <dc:Bounds x="390" y="77" width="100" height="80" />
- </bpmndi:BPMNShape>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/BaseTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/BaseTest.java
deleted file mode 100644
index 1a89f75a70..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/BaseTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import static org.camunda.bpm.engine.history.HistoricProcessInstance.STATE_ACTIVE;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-import org.camunda.bpm.engine.HistoryService;
-import org.camunda.bpm.engine.RuntimeService;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.junit.runner.RunWith;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringRunner;
-import com.github.tomakehurst.wiremock.WireMockServer;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-@ContextConfiguration
-@AutoConfigureWireMock(port = 0)
-public abstract class BaseTest {
- protected static final String ETSI_CATALOG_URL = "http://modeling-etsicatalog.onap:8806/api";
- protected static final String SOL003_ADAPTER_ENDPOINT_URL = "https://so-vnfm-adapter.onap:9092/so/vnfm-adapter/v1";
- protected static final String GLOBAL_CUSTOMER_ID = UUID.randomUUID().toString();
- protected static final String NSD_INVARIANT_ID = UUID.randomUUID().toString();
- protected static final String SERVICE_TYPE = "NetworkService";
- protected static final String UUID_REGEX =
- "[0-9a-zA-Z]{8}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{12}";
- protected static final String RANDOM_JOB_ID = UUID.randomUUID().toString();
-
- protected static final Logger logger = getLogger(BaseTest.class);
-
- private static final long TIME_OUT_IN_SECONDS = 120;
- private static final int SLEEP_TIME_IN_SECONDS = 5;
-
- @Autowired
- private HistoryService historyService;
-
- @Autowired
- private RuntimeService runtimeService;
-
- @Autowired
- protected DatabaseServiceProvider databaseServiceProvider;
-
- @Autowired
- protected WireMockServer wireMockServer;
-
- public NfvoJob createNewNfvoJob(final String jobAction, final String nsdId, final String nsName) {
- final NfvoJob newJob = new NfvoJob().startTime(LocalDateTime.now()).jobType("NS").jobAction(JobAction.CREATE)
- .status(JobStatusEnum.STARTING).resourceId(nsdId).resourceName(nsName);
- databaseServiceProvider.addJob(newJob);
- return newJob;
- }
-
- public Optional<NfvoJob> getNfvoJob(final String jobId) {
- return databaseServiceProvider.getJob(jobId);
- }
-
- public Optional<NfvoJob> getJobByResourceId(final String resourceId) {
- return databaseServiceProvider.getJobByResourceId(resourceId);
- }
-
- public ProcessInstance executeWorkflow(final String processDefinitionKey, final String businessKey,
- final Map<String, Object> variables) {
- return runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
- }
-
- public HistoricProcessInstance getHistoricProcessInstance(final String processInstanceId) {
- return historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- }
-
- public HistoricVariableInstance getVariable(final String processInstanceId, final String name) {
- return historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId)
- .variableName(name).singleResult();
- }
-
- public List<HistoricVariableInstance> getVariables(final String processInstanceId) {
- return historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();
- }
-
- public boolean waitForProcessInstanceToFinish(final String processInstanceId) throws InterruptedException {
- final long startTimeInMillis = System.currentTimeMillis();
- final long timeOutTime = startTimeInMillis + TimeUnit.SECONDS.toMillis(TIME_OUT_IN_SECONDS);
- while (timeOutTime > System.currentTimeMillis()) {
-
- if (isProcessEndedByProcessInstanceId(processInstanceId)) {
- logger.info("processInstanceId: {} is finished", processInstanceId);
- return true;
- }
- logger.info("processInstanceId: {} is still running", processInstanceId);
- logger.info("Process instance {} not finished yet, will try again in {} seconds", processInstanceId,
- SLEEP_TIME_IN_SECONDS);
- TimeUnit.SECONDS.sleep(SLEEP_TIME_IN_SECONDS);
- }
- logger.warn("Timeout {} process didn't finished ", processInstanceId);
- return false;
- }
-
-
- public boolean isProcessEndedByProcessInstanceId(final String processInstanceId) {
- return !isProcessInstanceActive(processInstanceId) && isProcessInstanceEnded(processInstanceId);
- }
-
- private boolean isProcessInstanceActive(final String processInstanceId) {
- final HistoricProcessInstance processInstance = getHistoricProcessInstance(processInstanceId);
- return processInstance != null && STATE_ACTIVE.equalsIgnoreCase(processInstance.getState());
- }
-
- private boolean isProcessInstanceEnded(final String processInstanceId) {
- return runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult() == null;
- }
-
- protected String getAaiServiceInstanceEndPoint() {
- return "/aai/v[0-9]+/business/customers/customer/" + GLOBAL_CUSTOMER_ID
- + "/service-subscriptions/service-subscription/" + SERVICE_TYPE
- + "/service-instances/service-instance/.*";
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java
deleted file mode 100644
index f91cf9d0c3..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/DefaultToShortClassNameBeanNameGenerator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.context.annotation.AnnotationBeanNameGenerator;
-import org.springframework.util.ClassUtils;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class DefaultToShortClassNameBeanNameGenerator extends AnnotationBeanNameGenerator {
-
- @Override
- protected String buildDefaultBeanName(final BeanDefinition definition) {
- return ClassUtils.getShortName(definition.getBeanClassName());
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java
deleted file mode 100644
index edfb20afd2..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import java.util.Arrays;
-import java.util.List;
-import org.junit.Test;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.VirtualNetworkFunction;
-import org.onap.so.openpojo.rules.ToStringTester;
-import com.openpojo.reflection.filters.FilterPackageInfo;
-import com.openpojo.validation.Validator;
-import com.openpojo.validation.ValidatorBuilder;
-import com.openpojo.validation.test.impl.GetterTester;
-import com.openpojo.validation.test.impl.SetterTester;
-import nl.jqno.equalsverifier.EqualsVerifier;
-import nl.jqno.equalsverifier.Warning;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class PojoClassesTests {
-
- @Test
- public void test_nsd_parser_pojo_classes() throws ClassNotFoundException {
-
- final Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester())
- .with(new ToStringTester()).build();
- validator.validate(FileEntry.class.getPackageName(), new FilterPackageInfo());
- }
-
-
- @Test
- public void test_nsd_parser_pojo_classes_equalAndHashMethod() throws ClassNotFoundException {
- final List<Class<?>> classes = Arrays.asList(FileEntry.class, NetworkServiceDescriptor.class,
- ToscaMetadata.class, VirtualNetworkFunction.class);
- for (final Class<?> clazz : classes) {
- EqualsVerifier.forClass(clazz).suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS,
- Warning.INHERITED_DIRECTLY_FROM_OBJECT).verify();
- }
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/TestApplication.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/TestApplication.java
deleted file mode 100644
index 18d601930c..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/TestApplication.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.FilterType;
-import org.springframework.context.annotation.ComponentScan.Filter;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-@ComponentScan(basePackages = {"org.onap"}, nameGenerator = DefaultToShortClassNameBeanNameGenerator.class,
- excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class)})
-public class TestApplication {
-
- public static void main(final String[] args) {
- new SpringApplication(TestApplication.class).run(args);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParserTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParserTest.java
deleted file mode 100644
index 4a8c715e5c..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParserTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.Map;
-import java.util.Optional;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.TestApplication;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser.NetworkServiceDescriptorParser;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class NetworkServiceDescriptorParserTest {
-
- private static final String VALID_ETSI_NSD_FILE = "src/test/resources/ns.csar";
- private static final String INVALID_ETSI_NSD_FILE = "src/test/resources/invalid_ns.csar";
-
- @Autowired
- private NetworkServiceDescriptorParser objUnderTest;
-
- @Test
- public void testValidEtsiNsd_ableToParseIt() throws IOException {
- final byte[] zipBytes = Files.readAllBytes(Paths.get(getAbsolutePath(VALID_ETSI_NSD_FILE)));
- final Optional<NetworkServiceDescriptor> optional = objUnderTest.parse(zipBytes);
- assertTrue(optional.isPresent());
- final NetworkServiceDescriptor actualNsd = optional.get();
- assertEquals(NetworkServiceDescriptorParser.NS_NODE_TYPE, actualNsd.getType());
- assertFalse(actualNsd.getProperties().isEmpty());
-
- final Map<String, Object> actualNsdProperties = actualNsd.getProperties();
- assertEquals(5, actualNsdProperties.size());
- assertEquals("ffdddc5d-a44b-45ae-8fc3-e6551cce350f", actualNsdProperties.get("descriptor_id"));
- assertEquals(5, actualNsd.getVnfs().size());
-
- }
-
- @Test
- public void testEmptyEtsiNsd_returnEmptyOptional() throws IOException {
- assertFalse(objUnderTest.parse(new byte[] {}).isPresent());
- }
-
- @Test
- public void testInvalidEtsiNsd_returnEmptyOptional() throws IOException {
- final byte[] zipBytes = Files.readAllBytes(Paths.get(getAbsolutePath(INVALID_ETSI_NSD_FILE)));
- assertFalse(objUnderTest.parse(zipBytes).isPresent());
- }
-
- private String getAbsolutePath(final String path) {
- final File file = new File(path);
- return file.getAbsolutePath();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java
deleted file mode 100644
index 3686cd620d..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/CreateNsTaskTest.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.notFound;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static com.github.tomakehurst.wiremock.client.WireMock.put;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.WorkflowQueryService;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance.NsStateEnum;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.github.tomakehurst.wiremock.client.WireMock;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class CreateNsTaskTest extends BaseTest {
- private static final String NSD_ID = UUID.randomUUID().toString();
- private static final String NS_NAME = "CreateNetworkService-" + NSD_ID;
- private static final String CREATE_NS_WORKFLOW_NAME = "CreateNs";
-
- @Autowired
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- private RestTemplate restTemplate;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- @Autowired
- private JobExecutorService objUnderTest;
-
- @Autowired
- private WorkflowQueryService workflowQueryService;
-
- private MockRestServiceServer mockRestServiceServer;
-
- private Gson gson;
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- final MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate);
- builder.ignoreExpectOrder(true);
- mockRestServiceServer = builder.build();
- gson = gsonProvider.getGson();
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
- }
-
- @After
- public void after() {
- wireMockServer.resetAll();
- mockRestServiceServer.reset();
- }
-
- @Test
- public void testCreateNsWorkflow_SuccessfullCase() throws InterruptedException {
- final CreateNsRequest createNsRequest = getCreateNsRequest();
-
- mockEtsiCatalogEndpoints();
- mockAAIEndpoints(createNsRequest);
-
- final NsInstancesNsInstance nsResponse =
- objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE);
- assertNotNull(nsResponse);
- assertNotNull(nsResponse.getId());
-
- final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId());
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
-
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
-
- mockRestServiceServer.verify();
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
- assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName()));
-
- final NfvoJob actualJob = optional.get();
- assertEquals(JobStatusEnum.FINISHED, actualJob.getStatus());
-
- assertEquals(NS_NAME, nsResponse.getNsInstanceName());
- assertEquals(NsStateEnum.NOT_INSTANTIATED, nsResponse.getNsState());
-
- final HistoricVariableInstance doesNsPackageExistsVar =
- getVariable(nfvoJob.getProcessInstanceId(), "doesNsPackageExists");
- assertNotNull(doesNsPackageExistsVar);
- assertTrue((boolean) doesNsPackageExistsVar.getValue());
-
- final HistoricVariableInstance doesNsInstanceExistsVar =
- getVariable(nfvoJob.getProcessInstanceId(), "doesNsInstanceExists");
- assertNotNull(doesNsInstanceExistsVar);
- assertFalse((boolean) doesNsInstanceExistsVar.getValue());
-
- }
-
- @Test
- public void testCreateNsWorkflow_FailsToGetNsPackage() throws InterruptedException {
- final String nsdId = UUID.randomUUID().toString();
- final String nsdName = NS_NAME + "-" + System.currentTimeMillis();
- final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName);
-
- mockRestServiceServer.expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- try {
- objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE);
- fail("runCreateNsJob should throw exception");
- } catch (final Exception exception) {
- assertEquals(NsRequestProcessingException.class, exception.getClass());
- }
-
- final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId());
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
- assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus());
-
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
-
- mockRestServiceServer.verify();
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
-
- final HistoricVariableInstance nsResponseVariable =
- getVariable(nfvoJob.getProcessInstanceId(), CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME);
- assertNull(nsResponseVariable);
-
- final Optional<InlineResponse400> problemDetailsOptional =
- workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId());
- assertTrue(problemDetailsOptional.isPresent());
-
- final InlineResponse400 problemDetails = problemDetailsOptional.get();
- assertNotNull(problemDetails);
- assertNotNull(problemDetails.getDetail());
-
- final HistoricVariableInstance doesNsPackageExistsVar =
- getVariable(nfvoJob.getProcessInstanceId(), "doesNsPackageExists");
- assertNotNull(doesNsPackageExistsVar);
- assertFalse((boolean) doesNsPackageExistsVar.getValue());
- assertEquals("Unexpected exception occured while getting ns package using nsdId: " + nsdId,
- problemDetails.getDetail());
- }
-
- @Test
- public void testCreateNsWorkflow_FailsToFindJobUsingJobId() throws InterruptedException {
- final String nsdId = UUID.randomUUID().toString();
- final String nsdName = NS_NAME + "-" + System.currentTimeMillis();
- final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName);
-
- final String randomJobId = UUID.randomUUID().toString();
- final ProcessInstance processInstance =
- executeWorkflow(CREATE_NS_WORKFLOW_NAME, randomJobId, getVariables(randomJobId, createNsRequest));
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- mockRestServiceServer.verify();
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME);
-
- assertNull(nsResponseVariable);
-
- final HistoricVariableInstance workflowExceptionVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME);
-
- final InlineResponse400 problemDetails = (InlineResponse400) workflowExceptionVariable.getValue();
- assertNotNull(problemDetails);
- assertNotNull(problemDetails.getDetail());
- assertEquals("Unable to find job using job id: " + randomJobId, problemDetails.getDetail());
-
- }
-
- @Test
- public void testCreateNsWorkflow_NsInstanceExistsInDb() throws InterruptedException {
- final String nsdId = UUID.randomUUID().toString();
- final String nsdName = NS_NAME + "-" + System.currentTimeMillis();
- final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName);
-
- databaseServiceProvider.saveNfvoNsInst(new NfvoNsInst().nsInstId(nsdId).name(createNsRequest.getNsName())
- .nsPackageId(UUID.randomUUID().toString()).nsdId(nsdId).nsdInvariantId(nsdId)
- .description(createNsRequest.getNsDescription()).status(State.INSTANTIATED)
- .statusUpdatedTime(LocalDateTime.now()).globalCustomerId(GLOBAL_CUSTOMER_ID).serviceType(SERVICE_TYPE));
-
- mockEtsiCatalogEndpoints(nsdId);
-
- try {
- objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE);
- fail("runCreateNsJob should throw exception");
- } catch (final Exception exception) {
- assertEquals(NsRequestProcessingException.class, exception.getClass());
- }
-
- final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId());
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
- assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus());
-
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
-
- mockRestServiceServer.verify();
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
- assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName()));
-
- final HistoricVariableInstance historicVariableInstance =
- getVariable(nfvoJob.getProcessInstanceId(), CamundaVariableNameConstants.CREATE_NS_RESPONSE_PARAM_NAME);
-
- assertNull(historicVariableInstance);
-
- final Optional<InlineResponse400> problemDetailsOptional =
- workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId());
-
- final InlineResponse400 problemDetails = problemDetailsOptional.get();
- assertNotNull(problemDetails);
- assertNotNull(problemDetails.getDetail());
- assertTrue(problemDetails.getDetail().startsWith("Ns Instance already exists in database"));
-
- final HistoricVariableInstance doesNsInstanceExistsVar =
- getVariable(nfvoJob.getProcessInstanceId(), "doesNsInstanceExists");
- assertNotNull(doesNsInstanceExistsVar);
- assertTrue((boolean) doesNsInstanceExistsVar.getValue());
-
- }
-
- @Test
- public void testCreateNsWorkflow_FailToCreateResouceInAai() throws InterruptedException {
- final String nsdId = UUID.randomUUID().toString();
- final String nsdName = NS_NAME + "-" + System.currentTimeMillis();
- final CreateNsRequest createNsRequest = getCreateNsRequest(nsdId, nsdName);
-
- mockEtsiCatalogEndpoints(nsdId);
-
- final String modelEndpoint = getAaiServiceInstanceEndPoint();
- wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(WireMock.serverError()));
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(WireMock.serverError()));
-
- try {
- objUnderTest.runCreateNsJob(createNsRequest, GLOBAL_CUSTOMER_ID, SERVICE_TYPE);
- fail("runCreateNsJob should throw exception");
- } catch (final Exception exception) {
- assertEquals(NsRequestProcessingException.class, exception.getClass());
- }
- final Optional<NfvoJob> optional = getJobByResourceId(createNsRequest.getNsdId());
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
- assertEquals(JobStatusEnum.ERROR, nfvoJob.getStatus());
-
- mockRestServiceServer.verify();
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
- assertTrue(databaseServiceProvider.isNsInstExists(createNsRequest.getNsName()));
-
- final Optional<InlineResponse400> problemDetailsOptional =
- workflowQueryService.getProblemDetails(nfvoJob.getProcessInstanceId());
-
- final InlineResponse400 problemDetails = problemDetailsOptional.get();
- assertNotNull(problemDetails);
- assertEquals("Unable to Create Service Instance in AAI", problemDetails.getDetail());
-
- }
-
- private void mockAAIEndpoints(final CreateNsRequest createNsRequest) {
- final String modelEndpoint = getAaiServiceInstanceEndPoint();
-
- wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(ok()));
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(notFound()));
- }
-
- private void mockEtsiCatalogEndpoints(final String nsdId) {
- mockRestServiceServer.expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getNSPackageModel(NSD_ID)), MediaType.APPLICATION_JSON));
- }
-
- private void mockEtsiCatalogEndpoints() {
- mockEtsiCatalogEndpoints(NSD_ID);;
- }
-
- private NsdInfo getNSPackageModel(final String nsdId) {
- return new NsdInfo().id(nsdId).nsdId(nsdId).nsdInvariantId(NSD_INVARIANT_ID).nsdName("vcpe").nsdDesigner("ONAP")
- .vnfPkgIds(Arrays.asList(GLOBAL_CUSTOMER_ID));
- }
-
- private CreateNsRequest getCreateNsRequest() {
- return getCreateNsRequest(NSD_ID, NS_NAME);
- }
-
- private CreateNsRequest getCreateNsRequest(final String nsdId, final String nsName) {
- return new CreateNsRequest().nsdId(nsdId).nsName(nsName);
- }
-
- private Map<String, Object> getVariables(final String jobId, final CreateNsRequest createNsRequest) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(CamundaVariableNameConstants.JOB_ID_PARAM_NAME, jobId);
- variables.put(CamundaVariableNameConstants.CREATE_NS_REQUEST_PARAM_NAME, createNsRequest);
- variables.put(CamundaVariableNameConstants.GLOBAL_CUSTOMER_ID_PARAM_NAME, GLOBAL_CUSTOMER_ID);
- variables.put(CamundaVariableNameConstants.SERVICE_TYPE_PARAM_NAME, SERVICE_TYPE);
-
- return variables;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/DeleteNsTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/DeleteNsTaskTest.java
deleted file mode 100644
index 017bdf6b70..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/DeleteNsTaskTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.delete;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import java.time.LocalDateTime;
-import java.util.Optional;
-import java.util.UUID;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-public class DeleteNsTaskTest extends BaseTest {
-
- @Autowired
- private JobExecutorService objUnderTest;
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- }
-
- @After
- public void after() {
- wireMockServer.resetAll();
- }
-
- @Test
- public void testRunDeleteNsJob_nsInstanceIdNotInDatabase_throwsException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- assertTrue(databaseServiceProvider.getNfvoNsInst(nsInstanceId).isEmpty());
-
- expectedException.expect(NsRequestProcessingException.class);
- objUnderTest.runDeleteNsJob(nsInstanceId);
- }
-
- @Test
- public void testRunDeleteNsJob_nsInstanceStateInstantiated_throwsException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId, State.INSTANTIATED);
-
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- assertEquals(State.INSTANTIATED, optionalNfvoNsInst.get().getStatus());
-
- expectedException.expect(NsRequestProcessingException.class);
- objUnderTest.runDeleteNsJob(nsInstanceId);
- }
-
- @Test
- public void testRunDeleteNsJob_nsInstanceStateInstantiating_throwsException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId, State.INSTANTIATING);
-
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- assertEquals(State.INSTANTIATING, optionalNfvoNsInst.get().getStatus());
-
- expectedException.expect(NsRequestProcessingException.class);
- objUnderTest.runDeleteNsJob(nsInstanceId);
- }
-
- @Test
- public void testRunDeleteNsJob_nsInstanceStateTerminating_throwsException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId, State.TERMINATING);
-
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- assertEquals(State.TERMINATING, optionalNfvoNsInst.get().getStatus());
-
- expectedException.expect(NsRequestProcessingException.class);
- objUnderTest.runDeleteNsJob(nsInstanceId);
- }
-
- @Test
- public void testRunDeleteNsJob_nsInstanceStateFailed_throwsException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId, State.FAILED);
-
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- assertEquals(State.FAILED, optionalNfvoNsInst.get().getStatus());
-
- expectedException.expect(NsRequestProcessingException.class);
- objUnderTest.runDeleteNsJob(nsInstanceId);
- }
-
- @Test
- public void testRunDeleteNsJob_SuccessfulCase() throws InterruptedException {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId, State.NOT_INSTANTIATED);
- mockAaiEndpoints();
-
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- assertEquals(State.NOT_INSTANTIATED, optionalNfvoNsInst.get().getStatus());
-
- objUnderTest.runDeleteNsJob(nsInstanceId);
-
- final Optional<NfvoJob> optional = getJobByResourceId(nsInstanceId);
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
-
- // Confirm Process finishes in STATE_COMPLETED
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- // Confirm NS Instance no longer in database
- final Optional<NfvoNsInst> optionalNfvoNsInstance = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInstance.isEmpty());
- }
-
- private void addDummyNsToDatabase(final String nsInstanceId, final State state) {
- final String nsPackageId = UUID.randomUUID().toString();
- final NfvoNsInst nfvoNsInst = new NfvoNsInst().nsInstId(nsInstanceId).name("nsName").nsPackageId(nsPackageId)
- .nsdId("nsdId").nsdInvariantId("nsdId").status(state).statusUpdatedTime(LocalDateTime.now())
- .globalCustomerId(GLOBAL_CUSTOMER_ID).serviceType(SERVICE_TYPE);
- databaseServiceProvider.saveNfvoNsInst(nfvoNsInst);
- }
-
- private void mockAaiEndpoints() {
- final String modelEndpoint = getAaiServiceInstanceEndPoint();
- final String resourceVersion = "12345";
-
- final String body =
- "{\"resource-version\": \"" + resourceVersion + "\",\n\"orchestration-status\": \"Assigned\"}";
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(ok()).willReturn(okJson(body)));
-
- wireMockServer.stubFor(
- delete(urlMatching(modelEndpoint + "\\?resource-version=" + resourceVersion)).willReturn(ok()));
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/InstantiateNsTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/InstantiateNsTaskTest.java
deleted file mode 100644
index f1373bd4ea..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/InstantiateNsTaskTest.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.notFound;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
-import static com.github.tomakehurst.wiremock.client.WireMock.put;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onap.aaiclient.client.aai.AAIVersion.V19;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants.NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.etsicatalog.EtsiCatalogServiceProviderConfiguration.ETSI_CATALOG_REST_TEMPLATE_BEAN;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterConfiguration.SOL003_ADAPTER_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.ExpectedCount.times;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.stream.Collectors;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.hamcrest.text.MatchesPattern;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.aaiclient.client.aai.entities.Results;
-import org.onap.aaiclient.client.graphinventory.entities.Resource;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.NsdInfo;
-import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class InstantiateNsTaskTest extends BaseTest {
-
- private static final String TENANT_ID = "6ca8680feba04dad9254f423c6e28e1c";
- private static final String CLOUD_REGION = "regionOne";
- private static final String CLOUD_OWNER = "CloudOwner";
- private static final String UUID_REGEX =
- "[0-9a-zA-Z]{8}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{4}\\-[0-9a-zA-Z]{12}";
- private static final String VCPE_VBRGEMU_VNFD_ID = "b1bb0ce7-2222-4fa7-95ed-4840d70a1102";
- private static final String VCPE_VBNG = "b1bb0ce7-2222-4fa7-95ed-4840d70a1101";
- private static final String VCPE_INFRA_VNFD_ID = "b1bb0ce7-2222-4fa7-95ed-4840d70a1100";
- private static final String VGMUX_VNFD_ID = "0408f076-e6c0-4c82-9940-272fddbb82de";
- private static final String VGW_VNFD_ID = "3fca3543-07f5-492f-812c-ed462e4f94f4";
- private static final String[] VCPE_VNFDS =
- new String[] {VGW_VNFD_ID, VGMUX_VNFD_ID, VCPE_INFRA_VNFD_ID, VCPE_VBNG, VCPE_VBRGEMU_VNFD_ID};
- private static final String SAMPLE_NSD_FILE = "src/test/resources/ns.csar";
- private static final String NS_NAME = "InstantiateNetworkService";
-
- @Autowired
- private DatabaseServiceProvider databaseServiceProvider;
-
- @Autowired
- @Qualifier(ETSI_CATALOG_REST_TEMPLATE_BEAN)
- private RestTemplate etsiCatalogRestTemplate;
-
- @Autowired
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN)
- private RestTemplate sol003AdapterRestTemplate;
-
- private MockRestServiceServer mockEtsiCatalogRestServiceServer;
-
- private MockRestServiceServer mockSol003AdapterRestServiceServer;
-
- @Autowired
- private JobExecutorService objUnderTest;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- private Gson gson;
-
- private static final Map<String, String> VNFD_ID_TO_VNFPKG_ID_MAPPING = new HashMap<>();
- static {
- for (final String vnfd : VCPE_VNFDS) {
- VNFD_ID_TO_VNFPKG_ID_MAPPING.put(vnfd, UUID.randomUUID().toString());
- }
- }
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- gson = gsonProvider.getGson();
-
- mockEtsiCatalogRestServiceServer =
- MockRestServiceServer.bindTo(etsiCatalogRestTemplate).ignoreExpectOrder(true).build();
- mockSol003AdapterRestServiceServer =
- MockRestServiceServer.bindTo(sol003AdapterRestTemplate).ignoreExpectOrder(true).build();
-
- etsiCatalogRestTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
- sol003AdapterRestTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
-
- }
-
- @After
- public void after() {
- wireMockServer.resetAll();
- mockEtsiCatalogRestServiceServer.reset();
- }
-
- @Test
- public void testInstantiateNsWorkflow_JustUpdateStatus_SuccessfullCase() throws InterruptedException, IOException {
- final String nsdId = UUID.randomUUID().toString();
- final String nsdName = NS_NAME + "-" + System.currentTimeMillis();
-
- final NfvoNsInst newNfvoNsInst = new NfvoNsInst().nsInstId(nsdId).name(nsdName)
- .nsPackageId(UUID.randomUUID().toString()).nsPackageId(nsdId).nsdId(nsdId).nsdInvariantId(nsdId)
- .status(State.NOT_INSTANTIATED).statusUpdatedTime(LocalDateTime.now());
-
- databaseServiceProvider.saveNfvoNsInst(newNfvoNsInst);
-
- mockSol003AdapterEndpoints();
- mockAAIEndpoints(nsdId);
- mockEtsiCatalogEndpoints(nsdId);
-
- final String nsLcmOpOccId =
- objUnderTest.runInstantiateNsJob(newNfvoNsInst.getNsInstId(), getInstantiateNsRequest());
-
- final Optional<NfvoJob> optional = getJobByResourceId(newNfvoNsInst.getNsInstId());
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
-
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- // check if value in database has updated
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsdId);
- final NfvoNsInst nfvoNsInst = optionalNfvoNsInst.get();
- assertEquals(State.INSTANTIATED, nfvoNsInst.getStatus());
-
- final HistoricVariableInstance historicVariableInstance =
- getVariable(nfvoJob.getProcessInstanceId(), NETWORK_SERVICE_DESCRIPTOR_PARAM_NAME);
- assertNotNull(historicVariableInstance);
- final NetworkServiceDescriptor nsd = (NetworkServiceDescriptor) historicVariableInstance.getValue();
- assertNotNull(nsd);
-
- assertEquals(VNFD_ID_TO_VNFPKG_ID_MAPPING.size(), nsd.getVnfs().size());
-
- final List<NfvoNfInst> nfvoNfInsts = databaseServiceProvider.getNfvoNfInstByNsInstId(nsdId);
- assertNotNull(nsd);
- assertEquals(VNFD_ID_TO_VNFPKG_ID_MAPPING.size(), nfvoNfInsts.size());
-
- final Optional<NsLcmOpOcc> optionalNsLcmOpOcc = databaseServiceProvider.getNsLcmOpOcc(nsLcmOpOccId);
- assertTrue(optionalNsLcmOpOcc.isPresent());
-
- assertEquals(OperationStateEnum.COMPLETED, optionalNsLcmOpOcc.get().getOperationState());
-
- final Map<String, NfvoNfInst> nfvoNfInstsMap =
- nfvoNfInsts.stream().collect(Collectors.toMap(NfvoNfInst::getVnfdId, nfvoNfInst -> nfvoNfInst));
-
- for (final Entry<String, String> entry : VNFD_ID_TO_VNFPKG_ID_MAPPING.entrySet()) {
- assertTrue(nfvoNfInstsMap.containsKey(entry.getKey()));
- assertEquals(State.INSTANTIATED, nfvoNfInstsMap.get(entry.getKey()).getStatus());
-
- }
-
- }
-
- private void mockSol003AdapterEndpoints() {
- mockSol003AdapterRestServiceServer
- .expect(times(VNFD_ID_TO_VNFPKG_ID_MAPPING.size()),
- requestTo(MatchesPattern.matchesPattern(SOL003_ADAPTER_ENDPOINT_URL + "/vnfs/.*")))
- .andExpect(method(HttpMethod.POST))
- .andRespond(withSuccess(gson.toJson(new CreateVnfResponse().jobId(UUID.randomUUID().toString())),
- MediaType.APPLICATION_JSON));
-
- mockSol003AdapterRestServiceServer
- .expect(times(VNFD_ID_TO_VNFPKG_ID_MAPPING.size()),
- requestTo(MatchesPattern.matchesPattern(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/.*")))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(
- new org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse().operationState(
- org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.COMPLETED)
- .operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND)),
- MediaType.APPLICATION_JSON));
- }
-
- private void mockEtsiCatalogEndpoints(final String nsdId) throws IOException {
- mockEtsiCatalogRestServiceServer.expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getNSPackageModel(nsdId)), MediaType.APPLICATION_JSON));
- mockEtsiCatalogRestServiceServer
- .expect(requestTo(ETSI_CATALOG_URL + "/nsd/v1/ns_descriptors/" + nsdId + "/nsd_content"))
- .andExpect(method(HttpMethod.GET)).andRespond(withSuccess(
- getFileContent(getAbsolutePath(SAMPLE_NSD_FILE)), MediaType.APPLICATION_OCTET_STREAM));
-
- for (final Entry<String, String> entry : VNFD_ID_TO_VNFPKG_ID_MAPPING.entrySet()) {
- mockEtsiCatalogRestServiceServer
- .expect(requestTo(ETSI_CATALOG_URL + "/vnfpkgm/v1/vnf_packages/" + entry.getValue()))
- .andExpect(method(HttpMethod.GET)).andRespond(withSuccess(
- gson.toJson(getVnfPkgInfo(entry.getKey(), entry.getValue())), MediaType.APPLICATION_JSON));
- }
-
- }
-
- private VnfPkgInfo getVnfPkgInfo(final String vnfdId, final String vnfPkgId) {
- return new VnfPkgInfo().id(vnfPkgId).vnfdId(vnfdId);
- }
-
- private InstantiateNsRequest getInstantiateNsRequest() {
- final Map<String, Object> additionalParams = new HashMap<>();
- additionalParams.put("vim_id", CLOUD_OWNER + "_" + CLOUD_REGION + "_" + TENANT_ID);
-
- final InstantiateNsRequest instantiateNsRequest = new InstantiateNsRequest().nsFlavourId("default");
-
- for (final Entry<String, String> entry : VNFD_ID_TO_VNFPKG_ID_MAPPING.entrySet()) {
- instantiateNsRequest
- .addAdditionalParamsForVnfItem(new NsInstancesnsInstanceIdinstantiateAdditionalParamsForVnf()
- .vnfProfileId(entry.getKey()).additionalParams(additionalParams));
- }
-
- return instantiateNsRequest;
- }
-
- private NsdInfo getNSPackageModel(final String nsdId) {
- return new NsdInfo().id(nsdId).nsdId(nsdId).nsdInvariantId(NSD_INVARIANT_ID).nsdName("vcpe").nsdDesigner("ONAP")
- .vnfPkgIds(new ArrayList<>(VNFD_ID_TO_VNFPKG_ID_MAPPING.values()));
- }
-
- private byte[] getFileContent(final String path) throws IOException {
- return Files.readAllBytes(Paths.get(path));
- }
-
-
- private String getAbsolutePath(final String path) {
- return new File(path).getAbsolutePath();
- }
-
- private void mockAAIEndpoints(final String nsdId) throws JsonProcessingException {
- final String modelEndpoint = "/aai/" + V19 + "/network/generic-vnfs/generic-vnf/" + UUID_REGEX;
-
- wireMockServer.stubFor(
- get(urlMatching(modelEndpoint + "\\?resultIndex=0&resultSize=1&format=count")).willReturn(notFound()));
-
- wireMockServer.stubFor(put(urlMatching(modelEndpoint)).willReturn(ok()));
- wireMockServer.stubFor(put(urlMatching(modelEndpoint + "/relationship-list/relationship")).willReturn(ok()));
-
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(ok())
- .willReturn(okJson("{\"orchestration-status\": \"Created\"}")));
-
- wireMockServer.stubFor(get(urlMatching("/aai/" + V19 + "/nodes/service-instances/service-instance/.*"))
- .willReturn(okJson(getResourceResultsResponseAsJson(nsdId))));
-
- wireMockServer.stubFor(
- put(urlMatching("/aai/" + V19 + "/cloud-infrastructure/cloud-regions/cloud-region/" + CLOUD_OWNER + "/"
- + CLOUD_REGION + "/tenants/tenant/" + TENANT_ID + "/relationship-list/relationship"))
- .willReturn(ok()));
-
- }
-
- private String getResourceResultsResponseAsJson(final String nsdId) throws JsonProcessingException {
- final Resource resource = new Resource();
- resource.setResourceType("service-instance");
- resource.setResourceLink("/aai/" + V19 + "/business/customers/customer/" + GLOBAL_CUSTOMER_ID
- + "/service-subscriptions/service-subscription/NetworkService/service-instances/service-instance/"
- + nsdId);
- final Results<Resource> results = new Results<>();
- results.getResult().add(resource);
- return new ObjectMapper().writeValueAsString(results);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorInstantiateSol003AdapterNodeTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorInstantiateSol003AdapterNodeTaskTest.java
deleted file mode 100644
index ea720cd73b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorInstantiateSol003AdapterNodeTaskTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.tasks.MonitorInstantiateSol003AdapterNodeTask;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class MonitorInstantiateSol003AdapterNodeTaskTest extends BaseTest {
-
- private static final String RANDOWM_GENERIC_VNF_ID = UUID.randomUUID().toString();
- private static final String MONITOR_SOL003_ADAPTER_CREATE_NODE_STATUS_WORKFLOW =
- "MonitorSol003AdapterCreateNodeStatus";
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- }
-
- @Test
- public void testMonitorSol003AdapterCreateNodeStatus_SuccessfullCase() throws InterruptedException {
-
- final String modelEndpoint = "/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + UUID_REGEX;
-
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(ok())
- .willReturn(okJson("{\"orchestration-status\": \"Created\"}")));
-
-
- final ProcessInstance processInstance = executeWorkflow(MONITOR_SOL003_ADAPTER_CREATE_NODE_STATUS_WORKFLOW,
- RANDOM_JOB_ID, getVariables(RANDOM_JOB_ID, RANDOWM_GENERIC_VNF_ID));
-
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- MonitorInstantiateSol003AdapterNodeTask.CREATE_VNF_NODE_STATUS);
-
- assertNotNull(nsResponseVariable);
- assertTrue((boolean) nsResponseVariable.getValue());
-
- }
-
- private Map<String, Object> getVariables(final String jobId, final String vnfId) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(CamundaVariableNameConstants.JOB_ID_PARAM_NAME, jobId);
- variables.put(CamundaVariableNameConstants.NF_INST_ID_PARAM_NAME, vnfId);
-
- return variables;
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterCreateJobTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterCreateJobTaskTest.java
deleted file mode 100644
index aa8d8cf10e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterCreateJobTaskTest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.COMPLETED;
-import static org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum.STATUS_FOUND;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterConfiguration.SOL003_ADAPTER_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.util.HashMap;
-import java.util.Map;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class MonitorSol003AdapterCreateJobTaskTest extends BaseTest {
-
- private static final String MONITOR_SOL003_ADAPTER_CREATE_JOB_WORKFLOW = "MonitorSol003AdapterCreateJob";
-
- @Autowired
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN)
- private RestTemplate restTemplate;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- private MockRestServiceServer mockRestServiceServer;
- private Gson gson;
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- final MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate);
- builder.ignoreExpectOrder(true);
- mockRestServiceServer = builder.build();
-
- gson = gsonProvider.getGson();
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
- }
-
-
- @Test
- public void testMonitorSol003AdapterCreateJobTaskWorkflow_SuccessfullCase() throws InterruptedException {
-
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getQueryJobResponse()), MediaType.APPLICATION_JSON));
-
- final ProcessInstance processInstance = executeWorkflow(MONITOR_SOL003_ADAPTER_CREATE_JOB_WORKFLOW,
- RANDOM_JOB_ID, getVariables(RANDOM_JOB_ID, new CreateVnfResponse().jobId(RANDOM_JOB_ID)));
-
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME);
-
- assertNotNull(nsResponseVariable);
- assertEquals(COMPLETED, nsResponseVariable.getValue());
-
- }
-
- @Test
- public void testMonitorSol003AdapterCreateJobTaskWorkflow_FailurelCase() throws InterruptedException {
-
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET)).andRespond(withStatus(HttpStatus.NOT_FOUND));
-
- final ProcessInstance processInstance = executeWorkflow(MONITOR_SOL003_ADAPTER_CREATE_JOB_WORKFLOW,
- RANDOM_JOB_ID, getVariables(RANDOM_JOB_ID, new CreateVnfResponse().jobId(RANDOM_JOB_ID)));
-
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
-
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME);
-
- assertNull(nsResponseVariable);
-
- final HistoricVariableInstance workflowExceptionVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.NS_WORKFLOW_PROCESSING_EXCEPTION_PARAM_NAME);
-
- final InlineResponse400 problemDetails = (InlineResponse400) workflowExceptionVariable.getValue();
- assertNotNull(problemDetails);
- assertNotNull(problemDetails.getDetail());
- }
-
-
- private QueryJobResponse getQueryJobResponse() {
- return new QueryJobResponse().id(RANDOM_JOB_ID).operationState(COMPLETED)
- .operationStatusRetrievalStatus(STATUS_FOUND);
- }
-
- private Map<String, Object> getVariables(final String jobId, final CreateVnfResponse createVnfResponse) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(CamundaVariableNameConstants.JOB_ID_PARAM_NAME, jobId);
- variables.put(CamundaVariableNameConstants.CREATE_VNF_RESPONSE_PARAM_NAME, createVnfResponse);
-
- return variables;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterTerminateJobTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterTerminateJobTaskTest.java
deleted file mode 100644
index 13fff6d32b..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/MonitorSol003AdapterTerminateJobTaskTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import com.google.gson.Gson;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.history.HistoricVariableInstance;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.CamundaVariableNameConstants;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import java.util.HashMap;
-import java.util.Map;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.COMPLETED;
-import static org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.PROCESSING;
-import static org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum.STATUS_FOUND;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterConfiguration.SOL003_ADAPTER_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-public class MonitorSol003AdapterTerminateJobTaskTest extends BaseTest {
-
- private static final String MONITOR_SOL003_ADAPTER_TERMINATE_JOB_WORKFLOW = "MonitorSol003AdapterTerminateJob";
-
- @Autowired
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN)
- private RestTemplate restTemplate;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- private MockRestServiceServer mockRestServiceServer;
- private Gson gson;
-
- @Before
- public void before() {
- wireMockServer.resetAll();
-
- final MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate);
- builder.ignoreExpectOrder(true);
- mockRestServiceServer = builder.build();
-
- gson = gsonProvider.getGson();
- restTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
- }
-
-
- @Test
- public void testMonitorSol003AdapterTerminateJobTaskWorkflow_SuccessfulCase() throws InterruptedException {
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getQueryJobResponse(COMPLETED)), MediaType.APPLICATION_JSON));
-
- final ProcessInstance processInstance = executeWorkflow(MONITOR_SOL003_ADAPTER_TERMINATE_JOB_WORKFLOW,
- RANDOM_JOB_ID, getVariables(RANDOM_JOB_ID, new DeleteVnfResponse().jobId(RANDOM_JOB_ID)));
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME);
- assertNotNull(nsResponseVariable);
- assertEquals(COMPLETED, nsResponseVariable.getValue());
- }
-
- @Test
- public void testMonitorSol003AdapterTerminateJobTaskWorkflow_SuccessfulCaseFollowingProcessingDelay()
- throws InterruptedException {
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getQueryJobResponse(PROCESSING)), MediaType.APPLICATION_JSON));
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getQueryJobResponse(PROCESSING)), MediaType.APPLICATION_JSON));
- mockRestServiceServer.expect(requestTo(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/" + RANDOM_JOB_ID))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(getQueryJobResponse(COMPLETED)), MediaType.APPLICATION_JSON));
-
- final ProcessInstance processInstance = executeWorkflow(MONITOR_SOL003_ADAPTER_TERMINATE_JOB_WORKFLOW,
- RANDOM_JOB_ID, getVariables(RANDOM_JOB_ID, new DeleteVnfResponse().jobId(RANDOM_JOB_ID)));
- assertTrue(waitForProcessInstanceToFinish(processInstance.getProcessInstanceId()));
-
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(processInstance.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- final HistoricVariableInstance nsResponseVariable = getVariable(processInstance.getProcessInstanceId(),
- CamundaVariableNameConstants.OPERATION_STATUS_PARAM_NAME);
- assertNotNull(nsResponseVariable);
- assertEquals(COMPLETED, nsResponseVariable.getValue());
- }
-
- private QueryJobResponse getQueryJobResponse(final OperationStateEnum operationState) {
- return new QueryJobResponse().id(RANDOM_JOB_ID).operationState(operationState)
- .operationStatusRetrievalStatus(STATUS_FOUND);
- }
-
- private Map<String, Object> getVariables(final String jobId, final DeleteVnfResponse deleteVnfResponse) {
- final Map<String, Object> variables = new HashMap<>();
- variables.put(CamundaVariableNameConstants.JOB_ID_PARAM_NAME, jobId);
- variables.put(CamundaVariableNameConstants.DELETE_VNF_RESPONSE_PARAM_NAME, deleteVnfResponse);
-
- return variables;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/TerminateNsTaskTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/TerminateNsTaskTest.java
deleted file mode 100644
index 51460ec4c8..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/workflow/engine/tasks/TerminateNsTaskTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.workflow.engine.tasks;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.delete;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.extclients.vnfm.Sol003AdapterConfiguration.SOL003_ADAPTER_REST_TEMPLATE_BEAN;
-import static org.springframework.test.web.client.ExpectedCount.times;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.method;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.hamcrest.text.MatchesPattern;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
-import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.BaseTest;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-import com.google.gson.Gson;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-public class TerminateNsTaskTest extends BaseTest {
-
- @Autowired
- @Qualifier(SOL003_ADAPTER_REST_TEMPLATE_BEAN)
- private RestTemplate sol003AdapterRestTemplate;
-
- private MockRestServiceServer mockSol003AdapterRestServiceServer;
-
- @Autowired
- private JobExecutorService objUnderTest;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- private Gson gson;
-
- @Before
- public void before() {
- wireMockServer.resetAll();
- gson = gsonProvider.getGson();
- mockSol003AdapterRestServiceServer =
- MockRestServiceServer.bindTo(sol003AdapterRestTemplate).ignoreExpectOrder(true).build();
- sol003AdapterRestTemplate.getMessageConverters().add(new GsonHttpMessageConverter(gson));
- }
-
- @After
- public void after() {
- wireMockServer.resetAll();
- }
-
- @Test
- public void testRunTerminateNsJob_timeSetInTerminateRequest_throwsNsRequestProcessingException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- final TerminateNsRequest terminateNsRequest = new TerminateNsRequest().terminationTime(LocalDateTime.now());
- final String message = "TerminateNsRequest received with terminateTime: "
- + terminateNsRequest.getTerminationTime()
- + "\nOnly immediate Terminate requests are currently supported \n(i.e., terminateTime field must not be set).";
- expectedException.expect(NsRequestProcessingException.class);
- expectedException.expectMessage(message);
- objUnderTest.runTerminateNsJob(nsInstanceId, terminateNsRequest);
- }
-
- @Test
- public void testRunTerminateNsJob_NsInstNotInDb_throwsNsRequestProcessingException() {
- final String nsInstanceId = UUID.randomUUID().toString();
- final TerminateNsRequest terminateNsRequest = new TerminateNsRequest();
- final String message = "No matching NS Instance for id: " + nsInstanceId + " found in database.";
- assertThat(databaseServiceProvider.getNfvoNsInst(nsInstanceId)).isEmpty();
- expectedException.expect(NsRequestProcessingException.class);
- expectedException.expectMessage(message);
- objUnderTest.runTerminateNsJob(nsInstanceId, terminateNsRequest);
- }
-
- @Test
- public void testTerminateNsTask_SuccessfulCase() throws InterruptedException, IOException {
- final String nsInstanceId = UUID.randomUUID().toString();
- addDummyNsToDatabase(nsInstanceId);
- mockSol003AdapterEndpoints();
- mockAAIEndpoints();
-
- final String nsLcmOpOccId = objUnderTest.runTerminateNsJob(nsInstanceId, new TerminateNsRequest());
-
- final Optional<NfvoJob> optional = getJobByResourceId(nsInstanceId);
- assertTrue(optional.isPresent());
- final NfvoJob nfvoJob = optional.get();
-
- // Confirm Process finishes in STATE_COMPLETED
- assertTrue(waitForProcessInstanceToFinish(nfvoJob.getProcessInstanceId()));
- final HistoricProcessInstance historicProcessInstance =
- getHistoricProcessInstance(nfvoJob.getProcessInstanceId());
- assertNotNull(historicProcessInstance);
- assertEquals(HistoricProcessInstance.STATE_COMPLETED, historicProcessInstance.getState());
-
- // Confirm NS Instance set to NOT_INSTANTIATED and related NF Instances Deleted
- final Optional<NfvoNsInst> optionalNfvoNsInst = databaseServiceProvider.getNfvoNsInst(nsInstanceId);
- assertTrue(optionalNfvoNsInst.isPresent());
- final NfvoNsInst nfvoNsInst = optionalNfvoNsInst.get();
- assertEquals(State.NOT_INSTANTIATED, nfvoNsInst.getStatus());
- final List<NfvoNfInst> nfvoNfInsts = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstanceId);
- assertTrue(nfvoNfInsts.isEmpty());
-
- // Confirm NS LCM OP OCC Job set to Completed
- final Optional<NsLcmOpOcc> optionalNsLcmOpOcc = databaseServiceProvider.getNsLcmOpOcc(nsLcmOpOccId);
- assertTrue(optionalNsLcmOpOcc.isPresent());
- final NsLcmOpOcc nsLcmOpOcc = optionalNsLcmOpOcc.get();
- assertEquals(OperationStateEnum.COMPLETED, nsLcmOpOcc.getOperationState());
- }
-
- private void addDummyNsToDatabase(final String nsInstanceId) {
- final String nsPackageId = UUID.randomUUID().toString();
- final NfvoNsInst nfvoNsInst =
- new NfvoNsInst().nsInstId(nsInstanceId).name("nsName").nsPackageId(nsPackageId).nsdId("nsdId")
- .nsdInvariantId("nsdId").status(State.INSTANTIATED).statusUpdatedTime(LocalDateTime.now());
- databaseServiceProvider.saveNfvoNsInst(nfvoNsInst);
- addDummyNfToDatabase(nfvoNsInst);
- addDummyNfToDatabase(nfvoNsInst);
- addDummyNfToDatabase(nfvoNsInst);
- }
-
- private void addDummyNfToDatabase(final NfvoNsInst nfvoNsInst) {
- final LocalDateTime localDateTime = LocalDateTime.now();
- final String nfPackageId = UUID.randomUUID().toString();
- final NfvoNfInst nfvoNfInst =
- new NfvoNfInst().status(State.INSTANTIATED).createTime(localDateTime).lastUpdateTime(localDateTime)
- .name("nfName").vnfdId("vnfdId").packageId(nfPackageId).nfvoNsInst(nfvoNsInst);
- databaseServiceProvider.saveNfvoNfInst(nfvoNfInst);
- }
-
- private void mockSol003AdapterEndpoints() {
- final int numTimes = 3;
-
- mockSol003AdapterRestServiceServer
- .expect(times(numTimes),
- requestTo(MatchesPattern.matchesPattern(SOL003_ADAPTER_ENDPOINT_URL + "/vnfs/.*")))
- .andExpect(method(HttpMethod.DELETE))
- .andRespond(withSuccess(gson.toJson(new DeleteVnfResponse().jobId(UUID.randomUUID().toString())),
- MediaType.APPLICATION_JSON));
-
- mockSol003AdapterRestServiceServer
- .expect(times(numTimes),
- requestTo(MatchesPattern.matchesPattern(SOL003_ADAPTER_ENDPOINT_URL + "/jobs/.*")))
- .andExpect(method(HttpMethod.GET))
- .andRespond(withSuccess(gson.toJson(
- new org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse().operationState(
- org.onap.so.adapters.etsisol003adapter.lcm.v1.model.OperationStateEnum.COMPLETED)
- .operationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND)),
- MediaType.APPLICATION_JSON));
- }
-
- private void mockAAIEndpoints() {
- final String modelEndpoint = "/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + UUID_REGEX;
- final String resourceVersion = "12345";
-
- final String body =
- "{\"resource-version\": \"" + resourceVersion + "\",\n\"orchestration-status\": \"Assigned\"}";
- wireMockServer.stubFor(get(urlMatching(modelEndpoint)).willReturn(ok()).willReturn(okJson(body)));
-
- wireMockServer.stubFor(
- delete(urlMatching(modelEndpoint + "\\?resource-version=" + resourceVersion)).willReturn(ok()));
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/application.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/application.yaml
deleted file mode 100644
index 101e17a791..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/application.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- main:
- allow-bean-definition-overriding: true
- datasource:
- hikari:
- camunda:
- jdbcUrl: jdbc:h2:mem:example-simple;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
- driver-class-name: org.h2.Driver
- pool-name: ns-lcm-bpmn-pool
- registerMbeans: true
- nfvo:
- jdbcUrl: jdbc:h2:mem:nfvo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS nfvo;
- driver-class-name: org.h2.Driver
- pool-name: ns-lcm-bpmn-pool
- registerMbeans: true
- jpa:
- generate-ddl: true
- hibernate:
- ddl-auto: create
-hibernate:
- dialect: org.hibernate.dialect.H2Dialect
- hbm2ddl:
- auto: create
-aai:
- version: v19
- endpoint: http://localhost:${wiremock.server.port}
-etsi-catalog-manager:
- base:
- endpoint: http://modeling-etsicatalog.onap:8806/api
-so-etsi-ns-lcm-workflow-engine:
- requesttimeout:
- timeoutInSeconds: 120
-
-logging:
- level:
- org.reflections.Reflections: ERROR \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/invalid_ns.csar b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/invalid_ns.csar
deleted file mode 100644
index 63bad965b7..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/invalid_ns.csar
+++ /dev/null
Binary files differ
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/ns.csar b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/ns.csar
deleted file mode 100644
index eb19c762ae..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/resources/ns.csar
+++ /dev/null
Binary files differ
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/pom.xml
deleted file mode 100644
index cf852c14b0..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/pom.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm-database-service</artifactId>
- <name>SO ETSI NFVO NS LCM Database Service</name>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.flywaydb</groupId>
- <artifactId>flyway-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>nl.jqno.equalsverifier</groupId>
- <artifactId>equalsverifier</artifactId>
- <version>${equalsverifier-version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/CancelModeType.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/CancelModeType.java
deleted file mode 100644
index 627250535e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/CancelModeType.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-public enum CancelModeType {
- GRACEFUL, FORCEFUL;
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobAction.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobAction.java
deleted file mode 100644
index 8a22689f8a..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobAction.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum JobAction {
- CREATE, INSTANTIATE, TERMINATE, DELETE;
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobStatusEnum.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobStatusEnum.java
deleted file mode 100644
index c67a3cc692..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/JobStatusEnum.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum JobStatusEnum {
- STARTING, STARTED, IN_PROGRESS, ERROR, FINISHED, FINISHED_WITH_ERROR;
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJob.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJob.java
deleted file mode 100644
index 60b06e1061..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJob.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils;
-
-
-@Entity
-@Table(name = "JOB")
-public class NfvoJob {
-
- @Id
- @Column(name = "JOB_ID", nullable = false)
- private String jobId;
-
- @Column(name = "JOB_TYPE", nullable = false)
- private String jobType;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "JOB_ACTION", nullable = false)
- private JobAction jobAction;
-
- @Column(name = "RESOURCE_ID", nullable = false)
- private String resourceId;
-
- @Column(name = "RESOURCE_NAME")
- private String resourceName;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "STATUS", nullable = false)
- private JobStatusEnum status;
-
- @Column(name = "START_TIME")
- private LocalDateTime startTime;
-
- @Column(name = "END_TIME")
- private LocalDateTime endTime;
-
- @Column(name = "PROGRESS")
- private int progress;
-
- @Column(name = "PROCESS_INSTANCE_ID")
- private String processInstanceId;
-
- @OneToMany(mappedBy = "nfvoJob", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
- private List<NfvoJobStatus> nfvoJobStatuses = new ArrayList<>();
-
- public NfvoJob() {
- this.jobId = UUID.randomUUID().toString();
- }
-
- public void setJobId(final String jobId) {
- this.jobId = jobId;
- }
-
- public String getJobId() {
- return jobId;
- }
-
- public NfvoJob jobId(final String jobId) {
- this.jobId = jobId;
- return this;
- }
-
- public String getJobType() {
- return jobType;
- }
-
- public void setJobType(final String jobType) {
- this.jobType = jobType;
- }
-
- public NfvoJob jobType(final String jobType) {
- this.jobType = jobType;
- return this;
- }
-
- public JobAction getJobAction() {
- return jobAction;
- }
-
- public void setJobAction(final JobAction jobAction) {
- this.jobAction = jobAction;
- }
-
- public NfvoJob jobAction(final JobAction jobAction) {
- this.jobAction = jobAction;
- return this;
- }
-
- public String getResourceId() {
- return resourceId;
- }
-
- public void setResourceId(final String resourceId) {
- this.resourceId = resourceId;
- }
-
- public NfvoJob resourceId(final String resourceId) {
- this.resourceId = resourceId;
- return this;
- }
-
- public JobStatusEnum getStatus() {
- return status;
- }
-
- public void setStatus(final JobStatusEnum status) {
- this.status = status;
- }
-
- public NfvoJob status(final JobStatusEnum status) {
- this.status = status;
- return this;
- }
-
- public LocalDateTime getStartTime() {
- return startTime;
- }
-
- public void setStartTime(final LocalDateTime startTime) {
- this.startTime = startTime;
- }
-
- public NfvoJob startTime(final LocalDateTime startTime) {
- this.startTime = startTime;
- return this;
- }
-
- public LocalDateTime getEndTime() {
- return endTime;
- }
-
- public void setEndTime(final LocalDateTime endTime) {
- this.endTime = endTime;
- }
-
- public NfvoJob endTime(final LocalDateTime endTime) {
- this.endTime = endTime;
- return this;
- }
-
- public int getProgress() {
- return progress;
- }
-
- public void setProgress(final int progress) {
- this.progress = progress;
- }
-
- public NfvoJob progress(final int progress) {
- this.progress = progress;
- return this;
- }
-
- public String getProcessInstanceId() {
- return processInstanceId;
- }
-
- public void setProcessInstanceId(final String processInstanceId) {
- this.processInstanceId = processInstanceId;
- }
-
- public NfvoJob processInstanceId(final String processInstanceId) {
- this.processInstanceId = processInstanceId;
- return this;
- }
-
- public String getResourceName() {
- return resourceName;
- }
-
- public void setResourceName(final String resourceName) {
- this.resourceName = resourceName;
- }
-
- public NfvoJob resourceName(final String resourceName) {
- this.resourceName = resourceName;
- return this;
- }
-
- public List<NfvoJobStatus> getNfvoJobStatuses() {
- return nfvoJobStatuses;
- }
-
- public void setJobStatuses(final List<NfvoJobStatus> nfvoJobStatuses) {
- this.nfvoJobStatuses = nfvoJobStatuses;
- }
-
- public NfvoJob nfvoJobStatuses(final List<NfvoJobStatus> nfvoJobStatuses) {
- this.nfvoJobStatuses = nfvoJobStatuses;
- return this;
- }
-
- public NfvoJob nfvoJobStatus(final NfvoJobStatus nfvoJobStatus) {
- nfvoJobStatus.setNfvoJob(this);
- this.nfvoJobStatuses.add(nfvoJobStatus);
- return this;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(jobId, processInstanceId, jobType, jobAction, startTime, endTime, status, progress,
- resourceId, resourceName, nfvoJobStatuses);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj)
- return true;
- if (obj == null || getClass() != obj.getClass())
- return false;
- if (obj instanceof NfvoJob) {
- final NfvoJob other = (NfvoJob) obj;
- return Objects.equals(jobId, other.jobId) && Objects.equals(processInstanceId, other.processInstanceId)
- && Objects.equals(jobType, other.jobType) && Objects.equals(jobAction, other.jobAction)
- && Objects.equals(progress, other.progress) && Objects.equals(status, other.status)
- && Objects.equals(startTime, other.startTime) && Objects.equals(endTime, other.endTime)
- && Objects.equals(resourceId, other.resourceId) && Objects.equals(resourceName, other.resourceName)
- && Utils.isEquals(nfvoJobStatuses, other.nfvoJobStatuses);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NfvoJob {\n");
- sb.append(" jobId: ").append(toIndentedString(jobId)).append("\n");
- sb.append(" processInstanceId: ").append(toIndentedString(processInstanceId)).append("\n");
- sb.append(" jobType: ").append(toIndentedString(jobType)).append("\n");
- sb.append(" jobAction: ").append(toIndentedString(jobAction)).append("\n");
- sb.append(" progress: ").append(toIndentedString(progress)).append("\n");
- sb.append(" status: ").append(toIndentedString(status)).append("\n");
- sb.append(" startTime: ").append(toIndentedString(startTime)).append("\n");
- sb.append(" endTime: ").append(toIndentedString(endTime)).append("\n");
- sb.append(" resId: ").append(toIndentedString(resourceId)).append("\n");
- sb.append(" resName: ").append(toIndentedString(resourceName)).append("\n");
- sb.append(" nfvoJobStatuses: ").append(toIndentedString(nfvoJobStatuses)).append("\n");
-
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJobStatus.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJobStatus.java
deleted file mode 100644
index 66ae0e503c..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoJobStatus.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.time.LocalDateTime;
-import java.util.Objects;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "JOB_STATUS")
-public class NfvoJobStatus {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "ID")
- private int id;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "STATUS", nullable = false)
- private JobStatusEnum status;
-
- @Column(name = "DESCRIPTION", columnDefinition = "LONGTEXT")
- private String description;
-
- @Column(name = "UPDATED_TIME", nullable = false)
- private LocalDateTime updatedTime;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "JOB_ID", nullable = false)
- private NfvoJob nfvoJob;
-
- public int getId() {
- return id;
- }
-
- public JobStatusEnum getStatus() {
- return status;
- }
-
- public void setStatus(final JobStatusEnum status) {
- this.status = status;
- }
-
- public NfvoJobStatus status(final JobStatusEnum status) {
- this.status = status;
- return this;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(final String description) {
- this.description = description;
- }
-
- public NfvoJobStatus description(final String description) {
- this.description = description;
- return this;
- }
-
- public LocalDateTime getUpdatedTime() {
- return updatedTime;
- }
-
- public void setUpdatedTime(final LocalDateTime updatedTime) {
- this.updatedTime = updatedTime;
- }
-
- public NfvoJobStatus updatedTime(final LocalDateTime addTime) {
- this.updatedTime = addTime;
- return this;
- }
-
- public NfvoJob getNfvoJob() {
- return nfvoJob;
- }
-
- public void setNfvoJob(final NfvoJob nfvoJob) {
- this.nfvoJob = nfvoJob;
- }
-
- public NfvoJobStatus nfvoJob(final NfvoJob nfvoJob) {
- this.nfvoJob = nfvoJob;
- return this;
- }
-
-
- @Override
- public int hashCode() {
- return Objects.hash(id, status, updatedTime, description, nfvoJob != null ? nfvoJob.getJobId() : 0);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj)
- return true;
- if (obj == null || getClass() != obj.getClass())
- return false;
- if (obj instanceof NfvoJobStatus) {
- final NfvoJobStatus other = (NfvoJobStatus) obj;
- return Objects.equals(id, other.id) && Objects.equals(status, other.status)
- && Objects.equals(updatedTime, other.updatedTime) && Objects.equals(description, other.description)
- && (nfvoJob == null ? other.nfvoJob == null
- : other.nfvoJob != null && Objects.equals(nfvoJob.getJobId(), other.nfvoJob.getJobId()));
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NfvoJobStatus {\n");
- sb.append(" Id: ").append(toIndentedString(id)).append("\n");
- sb.append(" status: ").append(toIndentedString(status)).append("\n");
- sb.append(" descp: ").append(toIndentedString(description)).append("\n");
- sb.append(" updatedTime: ").append(toIndentedString(updatedTime)).append("\n");
- sb.append(" jobId: ").append(nfvoJob != null ? toIndentedString(nfvoJob.getJobId()) : "").append("\n");
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNfInst.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNfInst.java
deleted file mode 100644
index 570355fb37..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNfInst.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.time.LocalDateTime;
-import java.util.Objects;
-import java.util.UUID;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-/**
- * @author mukeshsharma (mukeshsharma@est.tech)
- */
-@Entity
-@Table(name = "NF_INST")
-public class NfvoNfInst {
-
- @Id
- @Column(name = "NF_INST_ID", nullable = false)
- private String nfInstId;
-
- @Column(name = "NAME")
- private String name;
-
- @Column(name = "VNFD_ID")
- private String vnfdId;
-
- @Column(name = "PACKAGE_ID")
- private String packageId;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "NS_INST_ID", nullable = false)
- private NfvoNsInst nsInst;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "STATUS", nullable = false)
- private State status;
-
- @Column(name = "CREATE_TIME")
- private LocalDateTime createTime;
-
- @Column(name = "LAST_UPDATE_TIME")
- private LocalDateTime lastUpdateTime;
-
- public NfvoNfInst() {
- this.nfInstId = UUID.randomUUID().toString();
- }
-
- public String getNfInstId() {
- return nfInstId;
- }
-
- public void setNfInstId(final String nfInstId) {
- this.nfInstId = nfInstId;
- }
-
- public NfvoNfInst nfInstId(final String nfInstId) {
- this.nfInstId = nfInstId;
- return this;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public NfvoNfInst name(final String name) {
- this.name = name;
- return this;
- }
-
- public String getVnfdId() {
- return vnfdId;
- }
-
- public void setVnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- }
-
- public NfvoNfInst vnfdId(final String vnfdId) {
- this.vnfdId = vnfdId;
- return this;
- }
-
- public String getPackageId() {
- return packageId;
- }
-
- public void setPackageId(final String packageId) {
- this.packageId = packageId;
- }
-
- public NfvoNfInst packageId(final String packageId) {
- this.packageId = packageId;
- return this;
- }
-
- public NfvoNsInst getNsInst() {
- return nsInst;
- }
-
- public void setNsInst(final NfvoNsInst nsInst) {
- this.nsInst = nsInst;
- }
-
- public NfvoNfInst nfvoNsInst(final NfvoNsInst nfvoNsInst) {
- this.nsInst = nfvoNsInst;
- return this;
- }
-
- public State getStatus() {
- return status;
- }
-
- public void setStatus(final State status) {
- this.status = status;
- }
-
- public NfvoNfInst status(final State status) {
- this.status = status;
- return this;
- }
-
- public LocalDateTime getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(final LocalDateTime createTime) {
- this.createTime = createTime;
- }
-
- public NfvoNfInst createTime(final LocalDateTime createTime) {
- this.createTime = createTime;
- return this;
- }
-
- public LocalDateTime getLastUpdateTime() {
- return lastUpdateTime;
- }
-
- public void setLastUpdateTime(final LocalDateTime lastUpdateTime) {
- this.lastUpdateTime = lastUpdateTime;
- }
-
- public NfvoNfInst lastUpdateTime(final LocalDateTime lastUpdateTime) {
- this.lastUpdateTime = lastUpdateTime;
- return this;
- }
-
- @Override
- public boolean equals(final Object object) {
- if (this == object)
- return true;
- if (object == null || getClass() != object.getClass())
- return false;
- final NfvoNfInst that = (NfvoNfInst) object;
- return Objects.equals(nfInstId, that.nfInstId) && Objects.equals(name, that.name)
- && Objects.equals(vnfdId, that.vnfdId) && Objects.equals(packageId, that.packageId)
- && (nsInst == null ? that.nsInst == null : that.nsInst != null && Objects.equals(nsInst, that.nsInst))
- && Objects.equals(status, that.status) && Objects.equals(createTime, that.createTime)
- && Objects.equals(lastUpdateTime, that.lastUpdateTime);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(nfInstId, name, vnfdId, packageId, nsInst != null ? nsInst.getNsInstId() : 0, status,
- createTime, lastUpdateTime);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NfvoNfInst {\n");
- sb.append(" nfInstId: ").append(toIndentedString(nfInstId)).append("\n");
- sb.append(" name: ").append(toIndentedString(name)).append("\n");
- sb.append(" vnfdId: ").append(toIndentedString(vnfdId)).append("\n");
- sb.append(" packageId: ").append(toIndentedString(packageId)).append("\n");
- sb.append(" nsInst: ").append(nsInst != null ? toIndentedString(nsInst.getNsInstId()) : null).append("\n");
- sb.append(" status: ").append(toIndentedString(status)).append("\n");
- sb.append(" createTime: ").append(toIndentedString(createTime)).append("\n");
- sb.append(" lastUpdateTime: ").append(toIndentedString(lastUpdateTime)).append("\n");
-
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNsInst.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNsInst.java
deleted file mode 100644
index 04f988c2fc..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NfvoNsInst.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Entity
-@Table(name = "NS_INST")
-public class NfvoNsInst {
-
- @Id
- @Column(name = "NS_INST_ID", nullable = false)
- private String nsInstId;
-
- @Column(name = "NAME", nullable = false)
- private String name;
-
- @Column(name = "NS_PACKAGE_ID")
- private String nsPackageId;
-
- @Column(name = "NSD_ID", nullable = false)
- private String nsdId;
-
- @Column(name = "NSD_INVARIANT_ID", nullable = false)
- private String nsdInvariantId;
-
- @Column(name = "DESCRIPTION", columnDefinition = "LONGTEXT")
- private String description;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "STATUS", nullable = false)
- private State status;
-
- @Column(name = "STATUS_UPDATED_TIME", nullable = false)
- private LocalDateTime statusUpdatedTime;
-
- @Column(name = "GLOBAL_CUSTOMER_ID")
- private String globalCustomerId;
-
- @Column(name = "SERVICE_TYPE")
- private String serviceType;
-
- @OneToMany(mappedBy = "nsInst", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
- private List<NfvoNfInst> nfvoNfInsts = new ArrayList<>();
-
- @OneToMany(mappedBy = "nfvoNsInst", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
- private List<NsLcmOpOcc> nsLcmOpOccs = new ArrayList<>();
-
- public NfvoNsInst() {
- this.nsInstId = UUID.randomUUID().toString();
- }
-
- public String getNsInstId() {
- return nsInstId;
- }
-
- public void setNsInstId(final String nsInstId) {
- this.nsInstId = nsInstId;
- }
-
- public NfvoNsInst nsInstId(final String nsInstId) {
- this.nsInstId = nsInstId;
- return this;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public NfvoNsInst name(final String name) {
- this.name = name;
- return this;
- }
-
- public String getNsPackageId() {
- return nsPackageId;
- }
-
- public void setNsPackageId(final String nsPackageId) {
- this.nsPackageId = nsPackageId;
- }
-
- public NfvoNsInst nsPackageId(final String nsPackageId) {
- this.nsPackageId = nsPackageId;
- return this;
- }
-
- public String getNsdId() {
- return nsdId;
- }
-
- public void setNsdId(final String nsdId) {
- this.nsdId = nsdId;
- }
-
- public NfvoNsInst nsdId(final String nsdId) {
- this.nsdId = nsdId;
- return this;
- }
-
- public String getNsdInvariantId() {
- return nsdInvariantId;
- }
-
- public void setNsdInvariantId(final String nsdInvariantId) {
- this.nsdInvariantId = nsdInvariantId;
- }
-
- public NfvoNsInst nsdInvariantId(final String nsdInvariantId) {
- this.nsdInvariantId = nsdInvariantId;
- return this;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(final String description) {
- this.description = description;
- }
-
- public NfvoNsInst description(final String description) {
- this.description = description;
- return this;
- }
-
- public State getStatus() {
- return status;
- }
-
- public void setStatus(final State status) {
- this.status = status;
- }
-
- public NfvoNsInst status(final State status) {
- this.status = status;
- return this;
- }
-
- public LocalDateTime getStatusUpdatedTime() {
- return statusUpdatedTime;
- }
-
- public void setStatusUpdatedTime(final LocalDateTime statusUpdatedTime) {
- this.statusUpdatedTime = statusUpdatedTime;
- }
-
- public NfvoNsInst statusUpdatedTime(final LocalDateTime statusUpdatedTime) {
- this.statusUpdatedTime = statusUpdatedTime;
- return this;
- }
-
- public String getGlobalCustomerId() {
- return globalCustomerId;
- }
-
- public void setGlobalCustomerId(final String globalCustomerId) {
- this.globalCustomerId = globalCustomerId;
- }
-
- public NfvoNsInst globalCustomerId(final String globalCustomerId) {
- this.globalCustomerId = globalCustomerId;
- return this;
- }
-
- public String getServiceType() {
- return serviceType;
- }
-
- public void setServiceType(final String serviceType) {
- this.serviceType = serviceType;
- }
-
- public NfvoNsInst serviceType(final String serviceType) {
- this.serviceType = serviceType;
- return this;
- }
-
- public List<NfvoNfInst> getNfvoNfInsts() {
- return nfvoNfInsts;
- }
-
- public void setNfvoNfInsts(final List<NfvoNfInst> nfvoNfInsts) {
- this.nfvoNfInsts = nfvoNfInsts;
- }
-
- public NfvoNsInst nfvoNfInsts(final NfvoNfInst nfvoNfInsts) {
- nfvoNfInsts.nfvoNsInst(this);
- this.nfvoNfInsts.add(nfvoNfInsts);
- return this;
- }
-
- public List<NsLcmOpOcc> getNsLcmOpOccs() {
- return nsLcmOpOccs;
- }
-
- public void setNsLcmOpOccs(final List<NsLcmOpOcc> nsLcmOpOccs) {
- this.nsLcmOpOccs = nsLcmOpOccs;
- }
-
- public NfvoNsInst nsLcmOpOccs(final NsLcmOpOcc nsLcmOpOcc) {
- nsLcmOpOcc.nfvoNsInst(this);
- this.nsLcmOpOccs.add(nsLcmOpOcc);
- return this;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(nsInstId, name, nsPackageId, nsdId, nsdInvariantId, description, status, statusUpdatedTime,
- globalCustomerId, serviceType, nfvoNfInsts, nsLcmOpOccs);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj)
- return true;
- if (obj == null || getClass() != obj.getClass())
- return false;
- if (obj instanceof NfvoNsInst) {
- final NfvoNsInst other = (NfvoNsInst) obj;
- return Objects.equals(nsInstId, other.nsInstId) && Objects.equals(name, other.name)
- && Objects.equals(nsPackageId, other.nsPackageId) && Objects.equals(nsdId, other.nsdId)
- && Objects.equals(nsdInvariantId, other.nsdInvariantId)
- && Objects.equals(description, other.description) && Objects.equals(status, other.status)
- && Objects.equals(statusUpdatedTime, other.statusUpdatedTime)
- && Objects.equals(globalCustomerId, other.globalCustomerId)
- && Objects.equals(serviceType, other.serviceType) && Objects.equals(nfvoNfInsts, other.nfvoNfInsts)
- && Objects.equals(nsLcmOpOccs, other.nsLcmOpOccs);
- }
- return false;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NfvoNsInst {\n");
- sb.append(" nsInstId: ").append(toIndentedString(nsInstId)).append("\n");
- sb.append(" name: ").append(toIndentedString(name)).append("\n");
- sb.append(" nsPackageId: ").append(toIndentedString(nsPackageId)).append("\n");
- sb.append(" nsdId: ").append(toIndentedString(nsdId)).append("\n");
- sb.append(" nsdInvariantId: ").append(toIndentedString(nsdInvariantId)).append("\n");
- sb.append(" description: ").append(toIndentedString(description)).append("\n");
- sb.append(" status: ").append(toIndentedString(status)).append("\n");
- sb.append(" statusUpdatedTime: ").append(toIndentedString(statusUpdatedTime)).append("\n");
- sb.append(" globalCustomerId: ").append(toIndentedString(globalCustomerId)).append("\n");
- sb.append(" serviceType: ").append(toIndentedString(serviceType)).append("\n");
- sb.append(" nfvoNfInsts: ").append(toIndentedString(nfvoNfInsts)).append("\n");
- sb.append(" nsLcmOpOccs: ").append(toIndentedString(nsLcmOpOccs)).append("\n");
-
- sb.append("}");
- return sb.toString();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpOcc.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpOcc.java
deleted file mode 100644
index 4846e5a361..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpOcc.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
-import java.time.LocalDateTime;
-import java.util.Objects;
-import java.util.UUID;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-/**
- * @author mukeshsharma(mukeshsharma@est.tech)
- */
-@Entity
-@Table(name = "NS_LCM_OP_OCCS")
-public class NsLcmOpOcc {
-
- @Id
- @Column(name = "ID", nullable = false)
- private String id;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "OPERATION_STATE", nullable = false)
- private OperationStateEnum operationState;
-
- @Column(name = "STATE_ENTERED_TIME")
- private LocalDateTime stateEnteredTime;
-
- @Column(name = "START_TIME")
- private LocalDateTime startTime;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "NS_INST_ID", nullable = false)
- private NfvoNsInst nfvoNsInst;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "OPERATION", nullable = false)
- private NsLcmOpType operation;
-
- @Column(name = "IS_AUTO_INVOCATION", nullable = false)
- private boolean isAutoInvocation;
-
- @Column(name = "OPERATION_PARAMS", columnDefinition = "LONGTEXT", nullable = false)
- private String operationParams;
-
- @Column(name = "IS_CANCEL_PENDING", nullable = false)
- private boolean isCancelPending;
-
- @Enumerated(EnumType.STRING)
- @Column(name = "CANCEL_MODE")
- private CancelModeType cancelMode;
-
- public NsLcmOpOcc() {
- this.id = UUID.randomUUID().toString();
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(final String id) {
- this.id = id;
- }
-
- public NsLcmOpOcc id(final String id) {
- this.id = id;
- return this;
- }
-
- public OperationStateEnum getOperationState() {
- return operationState;
- }
-
- public void setOperationState(final OperationStateEnum operationState) {
- this.operationState = operationState;
- }
-
- public NsLcmOpOcc operationState(final OperationStateEnum operationState) {
- this.operationState = operationState;
- return this;
- }
-
- public LocalDateTime getStateEnteredTime() {
- return stateEnteredTime;
- }
-
- public void setStateEnteredTime(final LocalDateTime stateEnteredTime) {
- this.stateEnteredTime = stateEnteredTime;
- }
-
- public NsLcmOpOcc stateEnteredTime(final LocalDateTime stateEnteredTime) {
- this.stateEnteredTime = stateEnteredTime;
- return this;
- }
-
- public LocalDateTime getStartTime() {
- return startTime;
- }
-
- public void setStartTime(final LocalDateTime startTime) {
- this.startTime = startTime;
- }
-
- public NsLcmOpOcc startTime(final LocalDateTime startTime) {
- this.startTime = startTime;
- return this;
- }
-
- public NfvoNsInst getNfvoNsInst() {
- return nfvoNsInst;
- }
-
- public void setNfvoNsInst(final NfvoNsInst nfvoNsInst) {
- this.nfvoNsInst = nfvoNsInst;
- }
-
- public NsLcmOpOcc nfvoNsInst(final NfvoNsInst nfvoNsInst) {
- this.nfvoNsInst = nfvoNsInst;
- return this;
- }
-
- public NsLcmOpType getOperation() {
- return operation;
- }
-
- public void setOperation(final NsLcmOpType operation) {
- this.operation = operation;
- }
-
- public NsLcmOpOcc operation(final NsLcmOpType operation) {
- this.operation = operation;
- return this;
- }
-
- public boolean getIsAutoInvocation() {
- return isAutoInvocation;
- }
-
- public void setIsAutoInvocation(final boolean isAutoInvocation) {
- this.isAutoInvocation = isAutoInvocation;
- }
-
- public NsLcmOpOcc isAutoInvocation(final boolean isAutoInvocation) {
- this.isAutoInvocation = isAutoInvocation;
- return this;
- }
-
- public CancelModeType getCancelMode() {
- return cancelMode;
- }
-
- public void setCancelMode(final CancelModeType cancelMode) {
- this.cancelMode = cancelMode;
- }
-
- public NsLcmOpOcc cancelMode(final CancelModeType cancelMode) {
- this.cancelMode = cancelMode;
- return this;
- }
-
- public String getOperationParams() {
- return operationParams;
- }
-
- public void setOperationParams(final String operationParams) {
- this.operationParams = operationParams;
- }
-
- public NsLcmOpOcc operationParams(final String operationParams) {
- this.operationParams = operationParams;
- return this;
- }
-
- public boolean getIsCancelPending() {
- return isCancelPending;
- }
-
- public void setIsCancelPending(final boolean isCancelPending) {
- this.isCancelPending = isCancelPending;
- }
-
- public NsLcmOpOcc isCancelPending(final boolean isCancelPending) {
- this.isCancelPending = isCancelPending;
- return this;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj)
- return true;
- if (obj == null || getClass() != obj.getClass())
- return false;
- final NsLcmOpOcc that = (NsLcmOpOcc) obj;
- return Objects.equals(id, that.id) && Objects.equals(operationState, that.operationState)
- && Objects.equals(stateEnteredTime, that.stateEnteredTime) && Objects.equals(startTime, that.startTime)
- && (nfvoNsInst == null ? that.nfvoNsInst == null
- : that.nfvoNsInst != null && Objects.equals(nfvoNsInst, that.nfvoNsInst))
- && Objects.equals(operation, that.operation) && Objects.equals(isAutoInvocation, that.isAutoInvocation)
- && Objects.equals(operationParams, that.operationParams)
- && Objects.equals(isCancelPending, that.isCancelPending) && Objects.equals(cancelMode, that.cancelMode);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, operationState, stateEnteredTime, startTime,
- nfvoNsInst != null ? nfvoNsInst.getNsInstId() : 0, operation, isAutoInvocation, operationParams,
- isCancelPending, cancelMode);
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder();
- sb.append("class NsLcmOpOcc {\n");
- sb.append(" id: ").append(toIndentedString(id)).append("\n");
- sb.append(" operationState: ").append(toIndentedString(operationState)).append("\n");
- sb.append(" stateEnteredTime: ").append(toIndentedString(stateEnteredTime)).append("\n");
- sb.append(" startTime: ").append(toIndentedString(startTime)).append("\n");
- sb.append(" nfvoNsInst: ").append(nfvoNsInst != null ? toIndentedString(nfvoNsInst.getNsInstId()) : null)
- .append("\n");
- sb.append(" operation: ").append(toIndentedString(operation)).append("\n");
- sb.append(" isAutoInvocation: ").append(toIndentedString(isAutoInvocation)).append("\n");
- sb.append(" operationParams: ").append(toIndentedString(operationParams)).append("\n");
- sb.append(" isCancelPending: ").append(toIndentedString(isCancelPending)).append("\n");
- sb.append(" cancelMode: ").append(toIndentedString(cancelMode)).append("\n");
- sb.append("}");
- return sb.toString();
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpType.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpType.java
deleted file mode 100644
index 351f9611c5..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/NsLcmOpType.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum NsLcmOpType {
- INSTANTIATE, TERMINATE, SCALE, UPDATE, HEAL;
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/OperationStateEnum.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/OperationStateEnum.java
deleted file mode 100644
index 236652e027..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/OperationStateEnum.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum OperationStateEnum {
- PROCESSING, COMPLETED, PARTIALLY_COMPLETED, FAILED_TEMP, FAILED, ROLLING_BACK, ROLLED_BACK;
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/State.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/State.java
deleted file mode 100644
index ce917dd771..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/State.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum State {
- NOT_INSTANTIATED, INSTANTIATING, INSTANTIATED, FAILED, TERMINATING;
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/Utils.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/Utils.java
deleted file mode 100644
index b84f95aa50..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/Utils.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class Utils {
-
- private Utils() {}
-
- public static final String toIndentedString(final Object object) {
- return object == null ? "null" : object.toString().replace("\n", "\n ");
- }
-
-
- public static boolean isEquals(final List<?> first, List<?> second) {
- if (first == null) {
- return second == null;
- }
-
- if (first.isEmpty()) {
- return second.isEmpty();
- }
- if ((first != null && second != null) && (first.size() == second.size())) {
- for (int index = 0; index < first.size(); index++) {
- if (!Objects.equals(first.get(index), second.get(index))) {
- return false;
- }
- }
- return true;
-
- }
- return false;
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/config/NfvoDatabaseConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/config/NfvoDatabaseConfiguration.java
deleted file mode 100644
index 1b4e40985a..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/config/NfvoDatabaseConfiguration.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.config;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.autoconfigure.flyway.FlywayDataSource;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jmx.export.MBeanExporter;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory",
- basePackages = {"org.onap.so.etsi.nfvo.ns.lcm.database.repository"})
-public class NfvoDatabaseConfiguration {
- private static final Logger logger = getLogger(NfvoDatabaseConfiguration.class);
-
- private static final String PERSISTENCE_UNIT = "nfvo";
- private static final String NFVO_DATA_SOURCE_QUALIFIER = "nfvoDataSource";
-
- @Autowired(required = false)
- private MBeanExporter mBeanExporter;
-
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.hikari.nfvo")
- public HikariConfig nfvoDbConfig() {
- logger.debug("Creating NFVO HikariConfig bean ... ");
- return new HikariConfig();
- }
-
- @Primary
- @FlywayDataSource
- @Bean(name = NFVO_DATA_SOURCE_QUALIFIER)
- public DataSource dataSource() {
- if (mBeanExporter != null) {
- mBeanExporter.addExcludedBean(NFVO_DATA_SOURCE_QUALIFIER);
- }
- logger.debug("Creating NFVO HikariDataSource bean ... ");
- final HikariConfig hikariConfig = this.nfvoDbConfig();
- return new HikariDataSource(hikariConfig);
- }
-
- @Primary
- @Bean(name = "entityManagerFactory")
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(final EntityManagerFactoryBuilder builder,
- @Qualifier(NFVO_DATA_SOURCE_QUALIFIER) final DataSource dataSource) {
- return builder.dataSource(dataSource).packages(NfvoJob.class.getPackage().getName())
- .persistenceUnit(PERSISTENCE_UNIT).build();
- }
-
- @Primary
- @Bean(name = "transactionManager")
- public PlatformTransactionManager transactionManager(
- @Qualifier("entityManagerFactory") final EntityManagerFactory entityManagerFactory) {
- return new JpaTransactionManager(entityManagerFactory);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NSLcmOpOccRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NSLcmOpOccRepository.java
deleted file mode 100644
index d7f2f4cefa..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NSLcmOpOccRepository.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import java.util.Optional;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author mukeshsharma(mukeshsharma@est.tech)
- */
-public interface NSLcmOpOccRepository extends JpaRepository<NsLcmOpOcc, String> {
-
- Optional<NsLcmOpOcc> findById(final String id);
-
- @Modifying(clearAutomatically = true)
- @Query("UPDATE NsLcmOpOcc SET operationState = (:operationState) WHERE id = (:id)")
- int updateNsLcmOpOccOperationState(@Param("id") final String id,
- @Param("operationState") final OperationStateEnum operationState);
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobRepository.java
deleted file mode 100644
index 220902c631..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobRepository.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import java.util.Optional;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface NfvoJobRepository extends JpaRepository<NfvoJob, String>, RefreshableRepository<NfvoJob> {
-
- Optional<NfvoJob> findByResourceId(final String resourceId);
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobStatusRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobStatusRepository.java
deleted file mode 100644
index c3fe469ff6..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoJobStatusRepository.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJobStatus;
-import org.springframework.data.repository.CrudRepository;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface NfvoJobStatusRepository extends CrudRepository<NfvoJobStatus, Integer> {
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNfInstRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNfInstRepository.java
deleted file mode 100644
index f91a85f2e6..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNfInstRepository.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import java.util.List;
-import java.util.Optional;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author mukeshsharma(mukeshsharma@est.tech)
- */
-public interface NfvoNfInstRepository extends JpaRepository<NfvoNfInst, String> {
-
- Optional<NfvoNfInst> findByNfInstId(final String nfInstId);
-
- List<NfvoNfInst> findByNsInstNsInstId(final String nsInstId);
-
- List<NfvoNfInst> findByNsInstNsInstIdAndName(final String nsInstId, final String name);
-
- @Modifying(clearAutomatically = true)
- @Query("UPDATE NfvoNfInst SET status = (:state) WHERE nfInstId = (:nfInstId)")
- int updateNfInstState(@Param("nfInstId") final String nfInstId, @Param("state") final State state);
-
- @Modifying(clearAutomatically = true)
- @Query("DELETE FROM NfvoNfInst WHERE nfInstId = (:nfInstId)")
- void deleteNfvoNfInstUsingNfInstId(@Param("nfInstId") final String nfInstId);
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNsInstRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNsInstRepository.java
deleted file mode 100644
index a64cf9bdd5..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/NfvoNsInstRepository.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import java.util.Optional;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface NfvoNsInstRepository extends JpaRepository<NfvoNsInst, String> {
-
- Optional<NfvoNsInst> findByName(final String name);
-
- Optional<NfvoNsInst> findByNsInstId(final String nsInstId);
-
- boolean existsNfvoNsInstByName(final String name);
-
- @Modifying(clearAutomatically = true)
- @Query("UPDATE NfvoNsInst SET status = (:state) WHERE nsInstId = (:nsInstId)")
- int updateNsInstState(@Param("nsInstId") final String nsInstId, @Param("state") final State state);
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepository.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepository.java
deleted file mode 100644
index efa7130d26..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepository.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public interface RefreshableRepository<T> {
-
- void refreshEntity(T entity);
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepositoryImpl.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepositoryImpl.java
deleted file mode 100644
index abd095f3c3..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/repository/RefreshableRepositoryImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.repository;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import org.springframework.stereotype.Repository;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Repository
-public class RefreshableRepositoryImpl<T> implements RefreshableRepository<T> {
-
- @PersistenceContext
- private EntityManager entityManager;
-
- @Override
- public void refreshEntity(final T entity) {
- entityManager.refresh(entity);
-
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/service/DatabaseServiceProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/service/DatabaseServiceProvider.java
deleted file mode 100644
index ec8777d0fa..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/database/service/DatabaseServiceProvider.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.service;
-
-import java.util.List;
-import java.util.Optional;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NSLcmOpOccRepository;
-import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoJobRepository;
-import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoNfInstRepository;
-import org.onap.so.etsi.nfvo.ns.lcm.database.repository.NfvoNsInstRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-
-@Service
-public class DatabaseServiceProvider {
- private static final Logger logger = LoggerFactory.getLogger(DatabaseServiceProvider.class);
-
- private final NfvoJobRepository nfvoJobRepository;
-
- private final NfvoNsInstRepository nfvoNsInstRepository;
-
- private final NfvoNfInstRepository nfvoNfInstRepository;
-
- private final NSLcmOpOccRepository nsLcmOpOccRepository;
-
- @Autowired
- public DatabaseServiceProvider(final NfvoJobRepository nfvoJobRepository,
- final NfvoNsInstRepository nfvoNsInstRepository, final NfvoNfInstRepository nfvoNfInstRepository,
- final NSLcmOpOccRepository nsLcmOpOccRepository) {
- this.nfvoJobRepository = nfvoJobRepository;
- this.nfvoNsInstRepository = nfvoNsInstRepository;
- this.nfvoNfInstRepository = nfvoNfInstRepository;
- this.nsLcmOpOccRepository = nsLcmOpOccRepository;
- }
-
- public boolean addJob(final NfvoJob job) {
- logger.info("Adding NfvoJob: {} to database", job);
- return nfvoJobRepository.saveAndFlush(job) != null;
- }
-
- public Optional<NfvoJob> getJob(final String jobId) {
- logger.info("Querying database for NfvoJob using jobId: {}", jobId);
- return nfvoJobRepository.findById(jobId);
- }
-
- @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.REPEATABLE_READ, readOnly = true)
- public Optional<NfvoJob> getRefreshedJob(final String jobId) {
- logger.info("Querying database for NfvoJob using jobId: {}", jobId);
- final Optional<NfvoJob> optional = getJob(jobId);
- if (optional.isPresent()) {
- nfvoJobRepository.refreshEntity(optional.get());
- }
- return optional;
- }
-
- public Optional<NfvoJob> getJobByResourceId(final String resourceId) {
- logger.info("Querying database for NfvoJob using resourceId: {}", resourceId);
- return nfvoJobRepository.findByResourceId(resourceId);
- }
-
- public boolean isNsInstExists(final String name) {
- logger.info("Checking if NfvoNsInst entry exists in database using name: {}", name);
- return nfvoNsInstRepository.existsNfvoNsInstByName(name);
- }
-
- public boolean isNsInstExists(final String nsInstId, final String nfName) {
- logger.info("Checking if NfvoNfInst entry exists in database using nsInstId: {} and nfName: {}", nsInstId,
- nfName);
- return nfvoNfInstRepository.findByNsInstNsInstIdAndName(nsInstId, nfName).isEmpty();
- }
-
- public boolean saveNfvoNsInst(final NfvoNsInst nfvoNsInst) {
- logger.info("Saving NfvoNsInst: {} to database", nfvoNsInst);
- return nfvoNsInstRepository.saveAndFlush(nfvoNsInst) != null;
- }
-
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public boolean updateNsInstState(final String nsInstId, final State state) {
- logger.info("Updating NfvoNsInst: {} State to {}", nsInstId, state);
- return nfvoNsInstRepository.updateNsInstState(nsInstId, state) > 0;
- }
-
- public Optional<NfvoNsInst> getNfvoNsInst(final String nsInstId) {
- logger.info("Querying database for NfvoNsInst using nsInstId: {}", nsInstId);
- return nfvoNsInstRepository.findById(nsInstId);
- }
-
- public Optional<NfvoNsInst> getNfvoNsInstByName(final String name) {
- logger.info("Querying database for NfvoNsInst using name: {}", name);
- return nfvoNsInstRepository.findByName(name);
- }
-
- public boolean saveNfvoNfInst(final NfvoNfInst nfvoNfInst) {
- logger.info("Saving NfvoNfInst: {} to database", nfvoNfInst);
- return nfvoNfInstRepository.saveAndFlush(nfvoNfInst) != null;
- }
-
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public boolean updateNfInstState(final String nfInstId, final State state) {
- logger.info("Updating NfvoNfInst: {} State to {}", nfInstId, state);
- return nfvoNfInstRepository.updateNfInstState(nfInstId, state) > 0;
- }
-
- public List<NfvoNfInst> getNfvoNfInstByNsInstId(final String nsInstId) {
- logger.info("Querying database for NfvoNfInst using nsInstId: {}", nsInstId);
- return nfvoNfInstRepository.findByNsInstNsInstId(nsInstId);
- }
-
- public List<NfvoNfInst> getNfvoNfInstByNsInstIdAndNfName(final String nsInstId, final String name) {
- logger.info("Querying database for NfvoNfInst using nsInstId: {} and name : {} ", nsInstId, name);
- return nfvoNfInstRepository.findByNsInstNsInstIdAndName(nsInstId, name);
- }
-
- public Optional<NfvoNfInst> getNfvoNfInst(final String nfInstId) {
- logger.info("Querying database for NfvoNfInst using nfInstId: {}", nfInstId);
- return nfvoNfInstRepository.findByNfInstId(nfInstId);
- }
-
- public boolean isNfInstExists(final String nfInstId) {
- logger.info("Checking if NfvoNfInst entry exists in database using nfInstId: {}", nfInstId);
- return nfvoNfInstRepository.findByNfInstId(nfInstId).isPresent();
- }
-
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public void deleteNfvoNfInst(final String nfInstId) {
- logger.info("Deleting NfvoNfInst with nfInstId: {} from database", nfInstId);
- nfvoNfInstRepository.deleteNfvoNfInstUsingNfInstId(nfInstId);
- }
-
- public boolean addNSLcmOpOcc(final NsLcmOpOcc nsLcmOpOcc) {
- logger.info("Adding NSLcmOpOcc: {} to database", nsLcmOpOcc);
- return nsLcmOpOccRepository.saveAndFlush(nsLcmOpOcc) != null;
- }
-
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public boolean updateNsLcmOpOccOperationState(final String id, final OperationStateEnum operationState) {
- logger.info("Updating NsLcmOpOcc: {} operationState to {}", id, operationState);
- return nsLcmOpOccRepository.updateNsLcmOpOccOperationState(id, operationState) > 0;
- }
-
- public Optional<NsLcmOpOcc> getNsLcmOpOcc(final String id) {
- logger.info("Querying database for NsLcmOpOcc using id: {}", id);
- return nsLcmOpOccRepository.findById(id);
- }
-
- public void deleteNfvoNsInst(final String nsInstId) {
- logger.info("Deleting NfvoNsInst with nsInstId: {}", nsInstId);
- nfvoNsInstRepository.deleteById(nsInstId);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/resources/db/migration/V1_1__create_nfvo_tables.sql b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/resources/db/migration/V1_1__create_nfvo_tables.sql
deleted file mode 100644
index 85a732b83e..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/main/resources/db/migration/V1_1__create_nfvo_tables.sql
+++ /dev/null
@@ -1,75 +0,0 @@
-use nfvo;
-
-CREATE TABLE IF NOT EXISTS `JOB` (
- `JOB_ID` varchar(255) NOT NULL,
- `JOB_TYPE` varchar(255) NOT NULL,
- `JOB_ACTION` varchar(255) NOT NULL,
- `RESOURCE_ID` varchar(255) NOT NULL,
- `RESOURCE_NAME` varchar(255) DEFAULT NULL,
- `STATUS` varchar(255) NOT NULL,
- `START_TIME` DATETIME DEFAULT NULL,
- `END_TIME` DATETIME DEFAULT NULL,
- `PROGRESS` int(11) DEFAULT NULL,
- `PROCESS_INSTANCE_ID` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`JOB_ID`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-
-
-CREATE TABLE IF NOT EXISTS `JOB_STATUS` (
- `ID` INT NOT NULL AUTO_INCREMENT,
- `UPDATED_TIME` DATETIME NOT NULL,
- `DESCRIPTION` longtext DEFAULT NULL,
- `STATUS` varchar(255) NOT NULL,
- `JOB_ID` varchar(255) NOT NULL,
- PRIMARY KEY (`ID`),
- FOREIGN KEY (JOB_ID)
- REFERENCES JOB(JOB_ID)
- ON UPDATE CASCADE ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `NS_INST` (
- `NS_INST_ID` varchar(255) NOT NULL,
- `NAME` varchar(255) NOT NULL,
- `NS_PACKAGE_ID` varchar(255) DEFAULT NULL,
- `NSD_ID` varchar(255) NOT NULL,
- `NSD_INVARIANT_ID` varchar(255) NOT NULL,
- `DESCRIPTION` longtext DEFAULT NULL,
- `STATUS` varchar(255) NOT NULL,
- `STATUS_UPDATED_TIME` DATETIME NOT NULL,
- `GLOBAL_CUSTOMER_ID` varchar(255) DEFAULT NULL,
- `SERVICE_TYPE` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`NS_INST_ID`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `NF_INST` (
- `NF_INST_ID` varchar(255) NOT NULL,
- `NAME` varchar(255) DEFAULT NULL,
- `VNFD_ID` varchar(255) DEFAULT NULL,
- `PACKAGE_ID` varchar(255) DEFAULT NULL,
- `NS_INST_ID` varchar(255) NOT NULL,
- `STATUS` varchar(255) NOT NULL,
- `CREATE_TIME` DATETIME DEFAULT NULL,
- `LAST_UPDATE_TIME` DATETIME DEFAULT NULL,
- PRIMARY KEY (`NF_INST_ID`),
- FOREIGN KEY (NS_INST_ID)
- REFERENCES NS_INST(NS_INST_ID)
- ON UPDATE CASCADE ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `NS_LCM_OP_OCCS` (
- `ID` varchar(255) NOT NULL,
- `OPERATION_STATE` varchar(255) NOT NULL,
- `STATE_ENTERED_TIME` DATETIME DEFAULT NULL,
- `START_TIME` DATETIME DEFAULT NULL,
- `NS_INST_ID` varchar(255) NOT NULL,
- `OPERATION` varchar(255) NOT NULL,
- `IS_AUTO_INVOCATION` varchar(255) NOT NULL,
- `OPERATION_PARAMS` longtext NOT NULL,
- `IS_CANCEL_PENDING` varchar(255) NOT NULL,
- `CANCEL_MODE` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`ID`),
- FOREIGN KEY (NS_INST_ID)
- REFERENCES NS_INST(NS_INST_ID)
- ON UPDATE CASCADE ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/DatabaseServiceProviderTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/DatabaseServiceProviderTest.java
deleted file mode 100644
index fcf7f9c373..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/DatabaseServiceProviderTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobAction;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.JobStatusEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJobStatus;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpType;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class DatabaseServiceProviderTest {
-
- private static final String RANDOM_ID = UUID.randomUUID().toString();
- private static final String DUMMY_NAME = "NAME";
- private static final LocalDateTime CURRENT_DATE_TIME = LocalDateTime.now();
- @Autowired
- private DatabaseServiceProvider databaseServiceProvider;
-
- @Test
- public void testAddJob_StoredInDatabase() {
- final NfvoJob expected = new NfvoJob().jobType("TYPE").jobAction(JobAction.CREATE).resourceId(RANDOM_ID)
- .resourceName(DUMMY_NAME).startTime(CURRENT_DATE_TIME).status(JobStatusEnum.STARTED);
- databaseServiceProvider.addJob(expected);
-
- Optional<NfvoJob> actual = databaseServiceProvider.getJob(expected.getJobId());
- assertEquals(expected, actual.get());
-
- actual = databaseServiceProvider.getRefreshedJob(expected.getJobId());
- assertEquals(expected, actual.get());
-
- }
-
- @Test
- public void testAddJobWithJobStatus_StoredInDatabase() {
- final NfvoJob job = new NfvoJob().jobType("TYPE").jobAction(JobAction.CREATE).resourceId(RANDOM_ID)
- .resourceName(DUMMY_NAME).startTime(CURRENT_DATE_TIME).status(JobStatusEnum.STARTED);
- databaseServiceProvider.addJob(job);
-
- final NfvoJobStatus jobStatus = new NfvoJobStatus().status(JobStatusEnum.STARTED)
- .description("Create NS workflow process started").updatedTime(CURRENT_DATE_TIME);
- databaseServiceProvider.addJob(job.nfvoJobStatus(jobStatus));
-
- final Optional<NfvoJob> actual = databaseServiceProvider.getJob(job.getJobId());
- final NfvoJob actualNfvoJob = actual.get();
-
- assertEquals(job.getJobId(), actualNfvoJob.getJobId());
- assertFalse(actualNfvoJob.getNfvoJobStatuses().isEmpty());
- assertEquals(job.getJobId(), actualNfvoJob.getNfvoJobStatuses().get(0).getNfvoJob().getJobId());
-
- }
-
- @Test
- public void testAddNsInst_StoredInDatabase_ableTofindByQuery() {
-
- final NfvoNsInst nsInst = new NfvoNsInst().name(DUMMY_NAME).nsdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
- .nsdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME);
-
- databaseServiceProvider.saveNfvoNsInst(nsInst);
-
- Optional<NfvoNsInst> actual = databaseServiceProvider.getNfvoNsInst(nsInst.getNsInstId());
- NfvoNsInst actualNfvoNsInst = actual.get();
- assertEquals(nsInst.getNsInstId(), actualNfvoNsInst.getNsInstId());
- assertEquals(RANDOM_ID, actualNfvoNsInst.getNsdId());
- assertEquals(State.NOT_INSTANTIATED, actualNfvoNsInst.getStatus());
- assertEquals(RANDOM_ID, actualNfvoNsInst.getNsdInvariantId());
- assertEquals(CURRENT_DATE_TIME, actualNfvoNsInst.getStatusUpdatedTime());
-
- actual = databaseServiceProvider.getNfvoNsInstByName(DUMMY_NAME);
- actualNfvoNsInst = actual.get();
-
- assertEquals(nsInst.getNsInstId(), actualNfvoNsInst.getNsInstId());
- assertEquals(RANDOM_ID, actualNfvoNsInst.getNsdId());
- assertEquals(State.NOT_INSTANTIATED, actualNfvoNsInst.getStatus());
- assertEquals(RANDOM_ID, actualNfvoNsInst.getNsdInvariantId());
- assertEquals(CURRENT_DATE_TIME, actualNfvoNsInst.getStatusUpdatedTime());
-
-
- assertTrue(databaseServiceProvider.isNsInstExists(DUMMY_NAME));
- }
-
- @Test
- public void testAddNfInst_StoredInDatabase_ableTofindByQuery() {
-
- final NfvoNsInst nsInst = new NfvoNsInst().name(DUMMY_NAME).nsdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
- .nsdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME);
-
- databaseServiceProvider.saveNfvoNsInst(nsInst);
-
- final NfvoNfInst nfInst = new NfvoNfInst().nfvoNsInst(nsInst).name(DUMMY_NAME).vnfdId(RANDOM_ID)
- .status(State.NOT_INSTANTIATED).createTime(CURRENT_DATE_TIME).lastUpdateTime(CURRENT_DATE_TIME);
- databaseServiceProvider.saveNfvoNfInst(nfInst);
-
- final Optional<NfvoNfInst> actual = databaseServiceProvider.getNfvoNfInst(nfInst.getNfInstId());
- final NfvoNfInst actualNfvoNfInst = actual.get();
- assertEquals(nsInst.getNsInstId(), actualNfvoNfInst.getNsInst().getNsInstId());
- assertEquals(nfInst.getNfInstId(), actualNfvoNfInst.getNfInstId());
- assertEquals(nfInst.getName(), actualNfvoNfInst.getName());
- assertEquals(nfInst.getVnfdId(), actualNfvoNfInst.getVnfdId());
- assertEquals(nfInst.getStatus(), actualNfvoNfInst.getStatus());
- assertEquals(nfInst.getCreateTime(), actualNfvoNfInst.getCreateTime());
- assertEquals(nfInst.getLastUpdateTime(), actualNfvoNfInst.getLastUpdateTime());
-
-
- List<NfvoNfInst> nfvoNfInstList = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInst.getNsInstId());
- assertFalse(nfvoNfInstList.isEmpty());
- assertEquals(nsInst.getNsInstId(), nfvoNfInstList.get(0).getNsInst().getNsInstId());
-
- nfvoNfInstList = databaseServiceProvider.getNfvoNfInstByNsInstIdAndNfName(nsInst.getNsInstId(), DUMMY_NAME);
-
- assertFalse(nfvoNfInstList.isEmpty());
- assertEquals(nsInst.getNsInstId(), nfvoNfInstList.get(0).getNsInst().getNsInstId());
- assertEquals(DUMMY_NAME, nfvoNfInstList.get(0).getName());
- }
-
- @Test
- public void testAddNsLcmOpOcc_StoredInDatabase_ableTofindByQuery() {
-
- final NfvoNsInst nsInst = new NfvoNsInst().name(DUMMY_NAME).nsdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
- .nsdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME);
-
- databaseServiceProvider.saveNfvoNsInst(nsInst);
-
- final NsLcmOpOcc nsLcmOpOcc = new NsLcmOpOcc().nfvoNsInst(nsInst).operationState(OperationStateEnum.PROCESSING)
- .isCancelPending(false).isAutoInvocation(false).operation(NsLcmOpType.INSTANTIATE)
- .startTime(CURRENT_DATE_TIME).stateEnteredTime(CURRENT_DATE_TIME).operationParams("");
-
-
- databaseServiceProvider.addNSLcmOpOcc(nsLcmOpOcc);
-
- final Optional<NsLcmOpOcc> actual = databaseServiceProvider.getNsLcmOpOcc(nsLcmOpOcc.getId());
- final NsLcmOpOcc actualLcmOpOcc = actual.get();
- assertEquals(nsLcmOpOcc.getId(), actualLcmOpOcc.getId());
-
- assertEquals(nsInst.getNsInstId(), actualLcmOpOcc.getNfvoNsInst().getNsInstId());
-
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/PojoClassesTests.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/PojoClassesTests.java
deleted file mode 100644
index 5f033a2438..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/PojoClassesTests.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import org.junit.Test;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJob;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoJobStatus;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNfInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.openpojo.rules.ToStringTester;
-import com.openpojo.reflection.filters.FilterPackageInfo;
-import com.openpojo.validation.Validator;
-import com.openpojo.validation.ValidatorBuilder;
-import com.openpojo.validation.test.impl.GetterTester;
-import com.openpojo.validation.test.impl.SetterTester;
-import nl.jqno.equalsverifier.EqualsVerifier;
-import nl.jqno.equalsverifier.Warning;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- */
-public class PojoClassesTests {
-
- @Test
- public void test_database_beans() throws ClassNotFoundException {
-
- final Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester())
- .with(new ToStringTester()).build();
- validator.validate(NfvoNsInst.class.getPackageName(), new FilterPackageInfo());
- }
-
- @Test
- public void test_database_nfvoJob_equalAndHashMethod() throws ClassNotFoundException {
- EqualsVerifier.forClass(NfvoJob.class)
- .suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT)
- .withPrefabValues(NfvoJobStatus.class, new NfvoJobStatus().nfvoJob(new NfvoJob()),
- new NfvoJobStatus().nfvoJob(new NfvoJob()))
- .withIgnoredAnnotations(Entity.class, Id.class).verify();
- }
-
- @Test
- public void test_database_nfvoJobStatus_equalAndHashMethod() throws ClassNotFoundException {
- EqualsVerifier.forClass(NfvoJobStatus.class)
- .suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT)
- .withPrefabValues(NfvoJob.class, new NfvoJob(), new NfvoJob())
- .withIgnoredAnnotations(Entity.class, Id.class).verify();
- }
-
- @Test
- public void test_database_nfvoNsInst_equalAndHashMethod() throws ClassNotFoundException {
- EqualsVerifier.forClass(NfvoNsInst.class)
- .suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT)
- .withPrefabValues(NfvoNfInst.class, new NfvoNfInst(), new NfvoNfInst())
- .withPrefabValues(NsLcmOpOcc.class, new NsLcmOpOcc(), new NsLcmOpOcc())
- .withIgnoredAnnotations(Entity.class, Id.class).verify();
- }
-
- @Test
- public void test_database_nfvoNfInst_equalAndHashMethod() throws ClassNotFoundException {
- EqualsVerifier.forClass(NfvoNfInst.class)
- .suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT)
- .withPrefabValues(NfvoNsInst.class, new NfvoNsInst(), new NfvoNsInst())
- .withIgnoredAnnotations(Entity.class, Id.class).verify();
- }
-
- @Test
- public void test_database_nsLcmOpOcc_equalAndHashMethod() throws ClassNotFoundException {
- EqualsVerifier.forClass(NsLcmOpOcc.class)
- .suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT)
- .withPrefabValues(NfvoNsInst.class, new NfvoNsInst(), new NfvoNsInst())
- .withIgnoredAnnotations(Entity.class, Id.class).verify();
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/TestApplication.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/TestApplication.java
deleted file mode 100644
index 921cae2343..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/TestApplication.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.etsi.nfvo.ns.lcm.database;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.FilterType;
-import org.springframework.context.annotation.ComponentScan.Filter;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-@ComponentScan(basePackages = {"org.onap"},
- excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class)})
-public class TestApplication {
-
- public static void main(final String[] args) {
- new SpringApplication(TestApplication.class).run(args);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/UtilsTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/UtilsTest.java
deleted file mode 100644
index 632bda937c..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/database/beans/utils/UtilsTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import java.util.Arrays;
-import java.util.Collections;
-import org.junit.Test;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class UtilsTest {
-
- @Test
- public void testTwoEmptyLists_equal() {
- assertTrue(Utils.isEquals(Collections.emptyList(), Collections.emptyList()));
- }
-
- @Test
- public void testEmptyListAndNonEmpty_notEqual() {
- assertFalse(Utils.isEquals(Collections.emptyList(), Arrays.asList("A")));
- }
-
- @Test
- public void testTwoNullLists_equal() {
- assertTrue(Utils.isEquals(null, null));
- }
-
- @Test
- public void testNullListAndEmptyList_notEqual() {
- assertFalse(Utils.isEquals(null, Collections.emptyList()));
- }
-
- @Test
- public void testTwoNotEmptyListsContainSameObjects_equal() {
- assertTrue(Utils.isEquals(Arrays.asList("A"), Arrays.asList("A")));
- }
-
- @Test
- public void testTwoNotEmptyListsContainsDifferentObjects_equal() {
- assertFalse(Utils.isEquals(Arrays.asList("A"), Arrays.asList(1)));
- }
-
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/resources/application.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/resources/application.yaml
deleted file mode 100644
index adc36aca1d..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-database-service/src/test/resources/application.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- main:
- web-application-type: none
- datasource:
- hikari:
- nfvo:
- jdbcUrl: jdbc:h2:mem:nfvo;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS nfvo;
- driver-class-name: org.h2.Driver
- pool-name: ns-lcm-bpmn-pool
- registerMbeans: true
- jpa:
- generate-ddl: true
- hibernate:
- ddl-auto: create
-hibernate:
- dialect: org.hibernate.dialect.H2Dialect
- hbm2ddl:
- auto: create \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/pom.xml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/pom.xml
deleted file mode 100644
index 6605602f53..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/pom.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-etsi-nfvo-ns-lcm-service</artifactId>
- <name>SO ETSI NFVO NS LCM Service</name>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-bpmn-flows</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onap.so.etsi.nfvo</groupId>
- <artifactId>so-etsi-nfvo-ns-lcm-bpmn-flows</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project> \ No newline at end of file
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java
deleted file mode 100644
index d330df3bae..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/Constants.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class Constants {
-
- public static final String SERVICE_NAME = "so-etsi-nfvo-ns-lcm";
- public static final String SERVICE_VERSION = "v1";
- public static final String BASE_URL = "/so/" + SERVICE_NAME + "/" + SERVICE_VERSION + "/api";
- public static final String NS_LIFE_CYCLE_MANAGEMENT_BASE_URL = BASE_URL + "/nslcm/v1";
-
- public static final String HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME = "HTTP_GLOBALCUSTOMERID";
- public static final String HTTP_SERVICETYPE_HEADER_PARM_NAME = "HTTP_SERVICETYPE";
- public static final String HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE = "NetworkService";
-
- private Constants() {}
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/EtsiSoNsLcmManagerUrlProvider.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/EtsiSoNsLcmManagerUrlProvider.java
deleted file mode 100644
index 80ec60468f..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/EtsiSoNsLcmManagerUrlProvider.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm;
-
-import java.net.URI;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class EtsiSoNsLcmManagerUrlProvider {
-
- private final String etsiNsLcmManagerEndpoint;
-
- @Autowired
- public EtsiSoNsLcmManagerUrlProvider(
- @Value("${so-etsi-nfvo-ns-lcm.endpoint:http://so-etsi-nfvo-ns-lcm.onap:9095}") final String etsiNsLcmManagerEndpoint) {
- this.etsiNsLcmManagerEndpoint = etsiNsLcmManagerEndpoint;
- }
-
- public URI getCreatedNsResourceUri(final String nsInstanceId) {
- return URI.create(etsiNsLcmManagerEndpoint + Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL + "/ns_instances/"
- + nsInstanceId);
- }
-
- public URI getNsLcmOpOccUri(final String nsLcmOpOccId) {
- return URI.create(etsiNsLcmManagerEndpoint + Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL + "/ns_lcm_op_occs/"
- + nsLcmOpOccId);
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/GsonSerializerConfiguration.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/GsonSerializerConfiguration.java
deleted file mode 100644
index 2e11adae01..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/GsonSerializerConfiguration.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm;
-
-import java.time.LocalDateTime;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.utils.LocalDateTimeTypeAdapter;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.google.gson.GsonBuilder;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class GsonSerializerConfiguration {
-
- @Bean
- public GsonBuilder gsonBuilder() {
- return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeTypeAdapter());
- }
-
-}
-
-
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLcmOperationOccurrenceManager.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLcmOperationOccurrenceManager.java
deleted file mode 100644
index 8a5cee6d75..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLcmOperationOccurrenceManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.lifecycle;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import org.onap.so.etsi.nfvo.ns.lcm.EtsiSoNsLcmManagerUrlProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstanceLinksSelf;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsLcmOpOccsNsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsLcmOpOccsNsLcmOpOccLinks;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import java.util.Optional;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Service
-public class NsLcmOperationOccurrenceManager {
-
- private static final Logger logger = getLogger(NsLcmOperationOccurrenceManager.class);
-
- private final DatabaseServiceProvider databaseServiceProvider;
- private final EtsiSoNsLcmManagerUrlProvider etsiSoNsLcmManagerUrlProvider;
-
- @Autowired
- public NsLcmOperationOccurrenceManager(final DatabaseServiceProvider databaseServiceProvider,
- final EtsiSoNsLcmManagerUrlProvider etsiSoNsLcmManagerUrlProvider) {
- this.databaseServiceProvider = databaseServiceProvider;
- this.etsiSoNsLcmManagerUrlProvider = etsiSoNsLcmManagerUrlProvider;
- }
-
- public Optional<NsLcmOpOccsNsLcmOpOcc> getNsLcmOperationOccurrence(final String nsLcmOpOccId) {
- logger.info("Getting NS LCM Operation Occurrence Operation for id: {}", nsLcmOpOccId);
- final Optional<NsLcmOpOcc> optionalNsLcmOpOcc = databaseServiceProvider.getNsLcmOpOcc(nsLcmOpOccId);
-
- if (optionalNsLcmOpOcc.isEmpty()) {
- logger.info("No NS LCM Operation Occurrence found for id: {}", nsLcmOpOccId);
- return Optional.empty();
- }
-
- logger.info("Found NS LCM Operation Occurrence for id: {}", nsLcmOpOccId);
- final NsLcmOpOcc nsLcmOpOcc = optionalNsLcmOpOcc.get();
- final NsLcmOpOccsNsLcmOpOcc nsLcmOpOccsNsLcmOpOcc = convertToNsLcmOpOccsNsLcmOpOcc(nsLcmOpOcc);
- return Optional.of(nsLcmOpOccsNsLcmOpOcc);
- }
-
- private NsLcmOpOccsNsLcmOpOcc convertToNsLcmOpOccsNsLcmOpOcc(final NsLcmOpOcc nsLcmOpOcc) {
- logger.info("Converting Database NsLcmOpOcc to API NsLcmOpOcc... ");
- final NsLcmOpOccsNsLcmOpOcc nsLcmOpOccsNsLcmOpOcc =
- new NsLcmOpOccsNsLcmOpOcc().id(nsLcmOpOcc.getId()).statusEnteredTime(nsLcmOpOcc.getStateEnteredTime())
- .startTime(nsLcmOpOcc.getStartTime()).isAutomaticInvocation(nsLcmOpOcc.getIsAutoInvocation())
- .isCancelPending(nsLcmOpOcc.getIsCancelPending());
-
- if (nsLcmOpOcc.getNfvoNsInst() != null) {
- nsLcmOpOccsNsLcmOpOcc.setNsInstanceId(nsLcmOpOcc.getNfvoNsInst().getNsInstId());
- }
-
- if (nsLcmOpOcc.getOperationState() != null) {
- nsLcmOpOccsNsLcmOpOcc.setOperationState(
- NsLcmOpOccsNsLcmOpOcc.OperationStateEnum.fromValue(nsLcmOpOcc.getOperationState().toString()));
- }
-
- if (nsLcmOpOcc.getOperation() != null) {
- nsLcmOpOccsNsLcmOpOcc.setLcmOperationType(
- NsLcmOpOccsNsLcmOpOcc.LcmOperationTypeEnum.fromValue(nsLcmOpOcc.getOperation().toString()));
- }
-
- if (nsLcmOpOcc.getOperationParams() != null) {
- nsLcmOpOccsNsLcmOpOcc.setOperationParams(nsLcmOpOcc.getOperationParams());
- }
-
- if (nsLcmOpOcc.getCancelMode() != null) {
- nsLcmOpOccsNsLcmOpOcc.setCancelMode(
- NsLcmOpOccsNsLcmOpOcc.CancelModeEnum.fromValue(nsLcmOpOcc.getCancelMode().toString()));
- }
-
- nsLcmOpOccsNsLcmOpOcc.setLinks(generateLinks(nsLcmOpOcc));
-
- logger.info("Database NsLcmOpOcc converted to API NsLcmOpOcc successfully... {}", nsLcmOpOccsNsLcmOpOcc);
- return nsLcmOpOccsNsLcmOpOcc;
- }
-
- private NsLcmOpOccsNsLcmOpOccLinks generateLinks(final NsLcmOpOcc nsLcmOpOcc) {
- logger.info("Generating links...");
- final String nsLcmOpOccId = nsLcmOpOcc.getId();
- final NsInstancesNsInstanceLinksSelf linksSelfNsLcmOpOcc = new NsInstancesNsInstanceLinksSelf()
- .href(etsiSoNsLcmManagerUrlProvider.getNsLcmOpOccUri(nsLcmOpOccId).toString());
- final NsLcmOpOccsNsLcmOpOccLinks links = new NsLcmOpOccsNsLcmOpOccLinks().self(linksSelfNsLcmOpOcc);
-
- if (nsLcmOpOcc.getNfvoNsInst() != null) {
- final String nsInstId = nsLcmOpOcc.getNfvoNsInst().getNsInstId();
- final NsInstancesNsInstanceLinksSelf linksSelfNsInst = new NsInstancesNsInstanceLinksSelf()
- .href(etsiSoNsLcmManagerUrlProvider.getCreatedNsResourceUri(nsInstId).toString());
- links.setNsInstance(linksSelfNsInst);
- }
-
- return links;
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLifeCycleManager.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLifeCycleManager.java
deleted file mode 100644
index ae9f55e1c5..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/lifecycle/NsLifeCycleManager.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.lifecycle;
-
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.so.etsi.nfvo.ns.lcm.EtsiSoNsLcmManagerUrlProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class NsLifeCycleManager {
- private static final Logger logger = getLogger(NsLifeCycleManager.class);
-
- private final JobExecutorService jobExecutorService;
-
- @Value("${etsi-so-ns-workflow-engine.requesttimeout.create.timeoutInSeconds:300}")
- private int timeOutInSeconds;
-
- private final EtsiSoNsLcmManagerUrlProvider etsiSoNsLcmManagerUrlProvider;
-
- @Autowired
- public NsLifeCycleManager(final JobExecutorService jobExecutorService,
- final EtsiSoNsLcmManagerUrlProvider etsiSoNsLcmManagerUrlProvider) {
- this.jobExecutorService = jobExecutorService;
- this.etsiSoNsLcmManagerUrlProvider = etsiSoNsLcmManagerUrlProvider;
- }
-
- public ImmutablePair<URI, NsInstancesNsInstance> createNs(final CreateNsRequest createNsRequest,
- final String globalCustomerId, final String serviceType) {
- logger.info("Will execute Create Ns for CreateNsRequest: {}, globalCustomerId: {} and serviceType: {}",
- createNsRequest, globalCustomerId, serviceType);
- final NsInstancesNsInstance nsInstanceResponse =
- jobExecutorService.runCreateNsJob(createNsRequest, globalCustomerId, serviceType);
-
- return ImmutablePair.of(etsiSoNsLcmManagerUrlProvider.getCreatedNsResourceUri(nsInstanceResponse.getId()),
- nsInstanceResponse);
- }
-
- public URI instantiateNs(final String nsInstanceId, final InstantiateNsRequest instantiateNsRequest) {
- logger.info("Will execute Instantiate Ns for InstantiateNsRequest: {} and nsInstanceId: {}",
- instantiateNsRequest, nsInstanceId);
- final String nsLcmOpOccId = jobExecutorService.runInstantiateNsJob(nsInstanceId, instantiateNsRequest);
-
- return etsiSoNsLcmManagerUrlProvider.getNsLcmOpOccUri(nsLcmOpOccId);
-
- }
-
- public URI terminateNs(final String nsInstanceId, final TerminateNsRequest terminateNsRequest) {
- logger.info("Will execute Terminate Ns for TerminateNsRequest: {} and nsInstanceId: {}", terminateNsRequest,
- nsInstanceId);
- final String nsLcmOpOccId = jobExecutorService.runTerminateNsJob(nsInstanceId, terminateNsRequest);
-
- return etsiSoNsLcmManagerUrlProvider.getNsLcmOpOccUri(nsLcmOpOccId);
- }
-
- public void deleteNs(final String nsInstanceId) {
- logger.info("Will execute Delete Ns for nsInstanceId: {}", nsInstanceId);
- jobExecutorService.runDeleteNsJob(nsInstanceId);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java
deleted file mode 100644
index 207f0ff387..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesController.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.rest;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL;
-import static org.slf4j.LoggerFactory.getLogger;
-import javax.ws.rs.core.MediaType;
-import org.onap.so.etsi.nfvo.ns.lcm.lifecycle.NsLcmOperationOccurrenceManager;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsLcmOpOccsNsLcmOpOcc;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import java.util.Optional;
-
-/**
- * Controller for handling NS lifecycle management operation occurrence requests see clause 6.4.9 and 6.4.10 in
- * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-@Controller
-@RequestMapping(value = NS_LIFE_CYCLE_MANAGEMENT_BASE_URL)
-public class NsLcmOperationOccurrencesController {
- private static final Logger logger = getLogger(NsLcmOperationOccurrencesController.class);
-
- private final NsLcmOperationOccurrenceManager nsLcmOperationOccurrenceManager;
-
- @Autowired
- public NsLcmOperationOccurrencesController(final NsLcmOperationOccurrenceManager nsLcmOperationOccurrenceManager) {
- this.nsLcmOperationOccurrenceManager = nsLcmOperationOccurrenceManager;
- }
-
- /**
- * The GET method to retrieve status information about a NS lifecycle management operation occurrence by reading an
- * individual "NS LCM operation occurrence" resource.
- *
- * @param nsLcmOpOccId Identifier of a NS lifecycle management operation occurrence
- * @return "200 OK" with {@link NsLcmOpOccsNsLcmOpOcc NsLcmOpOcc} Information about a NS LCM operation occurrence
- * was queried successfully. The response body shall contain status information about a NS lifecycle
- * management operation occurrence (see clause 6.5.2.3).
- */
- @GetMapping(value = "/ns_lcm_op_occs/{nsLcmOpOccId}",
- produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<?> getOperationStatus(@PathVariable("nsLcmOpOccId") final String nsLcmOpOccId) {
- logger.info("Received request to retrieve operation status for nsLcmOpOccId: {}", nsLcmOpOccId);
- final Optional<NsLcmOpOccsNsLcmOpOcc> optionalNsLcmOpOccs =
- nsLcmOperationOccurrenceManager.getNsLcmOperationOccurrence(nsLcmOpOccId);
-
- if (optionalNsLcmOpOccs.isPresent()) {
- final NsLcmOpOccsNsLcmOpOcc nsLcmOpOcc = optionalNsLcmOpOccs.get();
- logger.info("Sending back NsLcmOpOcc: {}", nsLcmOpOcc);
- return ResponseEntity.ok().body(nsLcmOpOcc);
- }
-
- final String errorMessage = "Unable to retrieve operation occurrence status for nsLcmOpOccId: " + nsLcmOpOccId;
- logger.error(errorMessage);
- return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new InlineResponse400().detail(errorMessage));
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java
deleted file mode 100644
index 4d6f92c373..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.rest;
-
-import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE;
-import static org.onap.so.etsi.nfvo.ns.lcm.Constants.HTTP_SERVICETYPE_HEADER_PARM_NAME;
-import static org.onap.so.etsi.nfvo.ns.lcm.Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL;
-import static org.slf4j.LoggerFactory.getLogger;
-import java.net.URI;
-import javax.ws.rs.core.MediaType;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.onap.so.etsi.nfvo.ns.lcm.lifecycle.NsLifeCycleManager;
-import org.onap.so.etsi.nfvo.ns.lcm.model.Body;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * Controller for handling the NS Lifecycle Management. For further information please read:
- * https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf Use the section number
- * above each endpoint to find the corresponding section in the above document.
- *
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Controller
-@RequestMapping(value = NS_LIFE_CYCLE_MANAGEMENT_BASE_URL)
-public class NsLifecycleManagementController {
- private static final Logger logger = getLogger(NsLifecycleManagementController.class);
-
- private final NsLifeCycleManager nsLifeCycleManager;
-
- @Autowired
- public NsLifecycleManagementController(final NsLifeCycleManager nsLifeCycleManager) {
- this.nsLifeCycleManager = nsLifeCycleManager;
- }
-
- /**
- * The POST method creates new {@link Body new NS instance resource} request. See Section Number: 6.3.1 for more
- * detail
- *
- * @param globalCustomerId The global customer ID
- * @param serviceType The service type
- * @param createNsRequest create network service request (see clause 6.5.2.9)
- * @return "201 Created" response containing a representation of the NS instance resource
- * {@link NsInstancesNsInstance} just created by the NFVO, and provides the URI of the newly-created
- * resource in the "Location:" HTTP header
- */
- @PostMapping(value = "/ns_instances", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<NsInstancesNsInstance> createNs(
- @RequestHeader(value = HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME,
- required = true) final String globalCustomerId,
- @RequestHeader(value = HTTP_SERVICETYPE_HEADER_PARM_NAME, required = false,
- defaultValue = HTTP_SERVICETYPE_HEADER_DEFAULT_VALUE) final String serviceType,
- @RequestBody final CreateNsRequest createNsRequest) {
- logger.info("Received Create NS Request: {}\n with globalCustomerId: {}\n serviceType: {}\n", createNsRequest,
- globalCustomerId, serviceType);
-
- final ImmutablePair<URI, NsInstancesNsInstance> nsInstance =
- nsLifeCycleManager.createNs(createNsRequest, globalCustomerId, serviceType);
-
- final URI resourceUri = nsInstance.getLeft();
- final NsInstancesNsInstance createdNsresponse = nsInstance.getRight();
-
- logger.info("NS resource created successfully. Resource location: {}, response: {}", resourceUri,
- createdNsresponse);
-
- return ResponseEntity.created(resourceUri).body(createdNsresponse);
- }
-
- /**
- * The DELETE method delete NS instance
- *
- * @param nsInstanceId Identifier of the NS instance to be deleted.
- * @return "202 Accepted" response with an empty entity body
- */
- @DeleteMapping(value = "/ns_instances/{nsInstanceId}",
- produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<Void> deleteNs(@PathVariable("nsInstanceId") final String nsInstanceId) {
- logger.debug("Received delete NS request for nsInstanceId: {}", nsInstanceId);
- nsLifeCycleManager.deleteNs(nsInstanceId);
- logger.info("Successfully deleted NS for nsInstanceId: {}", nsInstanceId);
- return ResponseEntity.noContent().build();
- }
-
- /**
- * The POST method instantiate NS instance
- *
- * @param nsInstanceId Identifier of the NS instance to be instantiated.
- * @param instantiateNsRequest Instantiate network service request (see clause 6.5.2.11)
- * @return "202 Accepted" response with an empty entity body and a "Location" HTTP header that points to the new "NS
- * Lifecycle Operation Occurrence" resource
- */
- @PostMapping(value = "/ns_instances/{nsInstanceId}/instantiate",
- produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<Void> instantiateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
- @RequestBody final InstantiateNsRequest instantiateNsRequest) {
- logger.debug("Received instantiate NS request: {}\n with nsInstanceId: {}", instantiateNsRequest, nsInstanceId);
- final URI resourceUri = nsLifeCycleManager.instantiateNs(nsInstanceId, instantiateNsRequest);
- logger.info("{} Ns Instantiation started successfully. Resource Operation Occurrence uri: {}", nsInstanceId,
- resourceUri);
- return ResponseEntity.accepted().location(resourceUri).build();
- }
-
- /**
- * The POST method terminate NS instance
- *
- * @param nsInstanceId Identifier of the NS instance to be terminated.
- * @param terminateNsRequest The terminate NS request parameters (see clause 6.5.2.15)
- * @return "202 Accepted" response with an empty entity body and a "Location" HTTP header that points to the new "NS
- * Lifecycle Operation Occurrence" resource
- */
- @PostMapping(value = "/ns_instances/{nsInstanceId}/terminate",
- produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
- consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public ResponseEntity<Void> terminateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
- @RequestBody(required = false) final TerminateNsRequest terminateNsRequest) {
- logger.debug("Received terminate NS request: {}\n with nsInstanceId: {}", terminateNsRequest, nsInstanceId);
- final URI resourceUri = nsLifeCycleManager.terminateNs(nsInstanceId, terminateNsRequest);
- logger.info("{} Ns Terminate started successfully. Resource Operation Occurrence uri: {}", nsInstanceId,
- resourceUri);
- return ResponseEntity.accepted().location(resourceUri).build();
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/exceptions/NsLcmControllerExceptionHandler.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/exceptions/NsLcmControllerExceptionHandler.java
deleted file mode 100644
index 3db04fcfe8..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/exceptions/NsLcmControllerExceptionHandler.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.rest.exceptions;
-
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.rest.NsLifecycleManagementController;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@ControllerAdvice(assignableTypes = NsLifecycleManagementController.class)
-public class NsLcmControllerExceptionHandler {
-
- @ExceptionHandler(NsRequestProcessingException.class)
- public ResponseEntity<InlineResponse400> handleNsRequestProcessingException(
- final NsRequestProcessingException nsRequestProcessingException) {
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
- .body(getInlineResponse400(nsRequestProcessingException));
- }
-
- @ExceptionHandler(Exception.class)
- public ResponseEntity<InlineResponse400> handleNsRequestProcessingException(final Exception exception) {
- return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new InlineResponse400()
- .status(HttpStatus.INTERNAL_SERVER_ERROR.value()).detail(exception.getMessage()));
- }
-
- private InlineResponse400 getInlineResponse400(final NsRequestProcessingException nsRequestProcessingException) {
- if (nsRequestProcessingException.getProblemDetails() != null) {
- return nsRequestProcessingException.getProblemDetails();
- }
- return new InlineResponse400().status(HttpStatus.INTERNAL_SERVER_ERROR.value())
- .detail(nsRequestProcessingException.getMessage());
- }
-
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/TestApplication.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/TestApplication.java
deleted file mode 100644
index d6f4a83811..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/TestApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@SpringBootApplication(scanBasePackages = {"org.onap.so"})
-@EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class})
-public class TestApplication {
- public static void main(final String[] args) {
- new SpringApplication(TestApplication.class).run(args);
- }
-}
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesControllerTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesControllerTest.java
deleted file mode 100644
index c5862569f2..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLcmOperationOccurrencesControllerTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import java.time.LocalDateTime;
-import java.util.Optional;
-import java.util.UUID;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.etsi.nfvo.ns.lcm.Constants;
-import org.onap.so.etsi.nfvo.ns.lcm.TestApplication;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NfvoNsInst;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpOcc;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.NsLcmOpType;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.OperationStateEnum;
-import org.onap.so.etsi.nfvo.ns.lcm.database.beans.State;
-import org.onap.so.etsi.nfvo.ns.lcm.database.service.DatabaseServiceProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsLcmOpOccsNsLcmOpOcc;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- * @author Andrew Lamb (andrew.a.lamb@est.tech)
- *
- */
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class NsLcmOperationOccurrencesControllerTest {
-
- private static final String NS_LCM_OP_OCCS = "/ns_lcm_op_occs/";
-
- @LocalServerPort
- private int port;
-
- @Autowired
- private DatabaseServiceProvider databaseServiceProvider;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- private TestRestTemplate testRestTemplate;
-
- @Before
- public void setUp() {
- final Gson gson = gsonProvider.getGson();
- testRestTemplate = new TestRestTemplate(
- new RestTemplateBuilder().additionalMessageConverters(new GsonHttpMessageConverter(gson)));
- }
-
- @Test
- public void testGetOperationStatus_validNsLcmOpOccId_returnsNsLcmOpOcc() {
- final String nsLcmOpOccId = addDummyNsLcmOpOccToDatabase();
- final String baseUrl = getNsLcmBaseUrl() + NS_LCM_OP_OCCS + nsLcmOpOccId;
- final HttpEntity<?> request = new HttpEntity<>(new HttpHeaders());
- final ResponseEntity<NsLcmOpOccsNsLcmOpOcc> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.GET, request, NsLcmOpOccsNsLcmOpOcc.class);
- assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
- }
-
- @Test
- public void testGetOperationStatus_nsLcmOpOccIdNotFound_returnsInlineResponse400() {
- final String nsLcmOpOccId = UUID.randomUUID().toString();
- final Optional<NsLcmOpOcc> optionalNsLcmOpOcc = databaseServiceProvider.getNsLcmOpOcc(nsLcmOpOccId);
- assertTrue(optionalNsLcmOpOcc.isEmpty());
- final String baseUrl = getNsLcmBaseUrl() + NS_LCM_OP_OCCS + nsLcmOpOccId;
- final HttpEntity<?> request = new HttpEntity<>(new HttpHeaders());
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.GET, request, InlineResponse400.class);
- assertEquals(HttpStatus.NOT_FOUND, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
- }
-
- private String addDummyNsLcmOpOccToDatabase() {
- final LocalDateTime currentDateTime = LocalDateTime.now();
-
- final NfvoNsInst nsInst = new NfvoNsInst().name("name").nsdId("id").status(State.NOT_INSTANTIATED)
- .nsdInvariantId("id").statusUpdatedTime(currentDateTime);
- databaseServiceProvider.saveNfvoNsInst(nsInst);
-
- final NsLcmOpOcc nsLcmOpOcc = new NsLcmOpOcc().nfvoNsInst(nsInst).operationState(OperationStateEnum.PROCESSING)
- .isCancelPending(false).isAutoInvocation(false).operation(NsLcmOpType.INSTANTIATE)
- .startTime(currentDateTime).stateEnteredTime(currentDateTime).operationParams("");
- databaseServiceProvider.addNSLcmOpOcc(nsLcmOpOcc);
-
- return nsLcmOpOcc.getId();
- }
-
- private String getNsLcmBaseUrl() {
- return "http://localhost:" + port + Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL;
- }
-}
-
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementControllerTest.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementControllerTest.java
deleted file mode 100644
index 585b0e1811..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementControllerTest.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.etsi.nfvo.ns.lcm.rest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.when;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.UUID;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.etsi.nfvo.ns.lcm.Constants;
-import org.onap.so.etsi.nfvo.ns.lcm.TestApplication;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.GsonProvider;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.NsRequestProcessingException;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.service.JobExecutorService;
-import org.onap.so.etsi.nfvo.ns.lcm.model.CreateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InlineResponse400;
-import org.onap.so.etsi.nfvo.ns.lcm.model.InstantiateNsRequest;
-import org.onap.so.etsi.nfvo.ns.lcm.model.NsInstancesNsInstance;
-import org.onap.so.etsi.nfvo.ns.lcm.model.TerminateNsRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.boot.test.web.client.TestRestTemplate;
-import org.springframework.boot.web.client.RestTemplateBuilder;
-import org.springframework.boot.web.server.LocalServerPort;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.http.converter.json.GsonHttpMessageConverter;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import com.google.gson.Gson;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-public class NsLifecycleManagementControllerTest {
- private static final String EXPECTED_BASE_URL =
- "http://so-etsi-nfvo-ns-lcm.onap:9095/so/so-etsi-nfvo-ns-lcm/v1/api/nslcm/v1";
- private static final String RANDOM_NS_LCM_OP_OCC_ID = UUID.randomUUID().toString();
- private static final String RANDOM_NS_INST_ID = UUID.randomUUID().toString();
- private static final String SERVICE_TYPE = "NetworkService";
- private static final String GLOBAL_CUSTOMER_ID = UUID.randomUUID().toString();
- private static final String EXPECTED_CREATE_REQ_LOCATION_URL =
- EXPECTED_BASE_URL + "/ns_instances/" + RANDOM_NS_INST_ID;
- private static final String EXPECTED_NS_LCM_OP_OCC_REQ_LOCATION_URL =
- EXPECTED_BASE_URL + "/ns_lcm_op_occs/" + RANDOM_NS_LCM_OP_OCC_ID;
-
- @LocalServerPort
- private int port;
-
- private TestRestTemplate testRestTemplate;
-
- @Autowired
- private GsonProvider gsonProvider;
-
- @MockBean
- private JobExecutorService mockedJobExecutorService;
-
- @Before
- public void setUp() {
- final Gson gson = gsonProvider.getGson();
- testRestTemplate = new TestRestTemplate(
- new RestTemplateBuilder().additionalMessageConverters(new GsonHttpMessageConverter(gson)));
- }
-
- @Test
- public void testCreateNs_ValidCreateNsRequest() throws URISyntaxException {
-
- final CreateNsRequest createNsRequest = getCreateNsRequest();
-
- when(mockedJobExecutorService.runCreateNsJob(eq(createNsRequest), eq(GLOBAL_CUSTOMER_ID), eq(SERVICE_TYPE)))
- .thenReturn(new NsInstancesNsInstance().id(RANDOM_NS_INST_ID));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances";
- final HttpHeaders headers = new HttpHeaders();
- headers.add(Constants.HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME, GLOBAL_CUSTOMER_ID);
- final HttpEntity<?> request = new HttpEntity<>(createNsRequest, headers);
- final ResponseEntity<NsInstancesNsInstance> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, NsInstancesNsInstance.class);
- assertEquals(HttpStatus.CREATED, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
-
- final HttpHeaders httpHeaders = responseEntity.getHeaders();
- assertTrue(httpHeaders.containsKey(HttpHeaders.LOCATION));
- final List<String> actual = httpHeaders.get(HttpHeaders.LOCATION);
- assertEquals(1, actual.size());
- assertEquals(EXPECTED_CREATE_REQ_LOCATION_URL, actual.get(0));
- }
-
- @Test
- public void testCreateNs_createNsRequest_nsRequestProcessingExceptionThrown_returnInlineResponse400()
- throws URISyntaxException {
-
- final CreateNsRequest createNsRequest = getCreateNsRequest();
-
- final String message = "Unable to process request";
- when(mockedJobExecutorService.runCreateNsJob(eq(createNsRequest), eq(GLOBAL_CUSTOMER_ID), eq(SERVICE_TYPE)))
- .thenThrow(new NsRequestProcessingException(message, new InlineResponse400().detail(message)));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances";
- final HttpHeaders headers = new HttpHeaders();
- headers.add(Constants.HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME, GLOBAL_CUSTOMER_ID);
- final HttpEntity<?> request = new HttpEntity<>(createNsRequest, headers);
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, InlineResponse400.class);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
-
- final InlineResponse400 body = responseEntity.getBody();
- assertEquals(message, body.getDetail());
-
- }
-
- @Test
- public void testCreateNs_createNsRequest_exceptionThrown_returnInlineResponse400() throws URISyntaxException {
-
- final CreateNsRequest createNsRequest = getCreateNsRequest();
-
- final String message = "Unable to process request";
- when(mockedJobExecutorService.runCreateNsJob(eq(createNsRequest), eq(GLOBAL_CUSTOMER_ID), eq(SERVICE_TYPE)))
- .thenThrow(new RuntimeException(message));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances";
- final HttpHeaders headers = new HttpHeaders();
- headers.add(Constants.HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME, GLOBAL_CUSTOMER_ID);
- final HttpEntity<?> request = new HttpEntity<>(createNsRequest, headers);
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, InlineResponse400.class);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
-
- final InlineResponse400 body = responseEntity.getBody();
- assertEquals(message, body.getDetail());
-
- }
-
- @Test
- public void testDeleteNs_SuccessfulCase() {
- final String nsInstId = UUID.randomUUID().toString();
- doNothing().when(mockedJobExecutorService).runDeleteNsJob(eq(nsInstId));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + nsInstId;
- final ResponseEntity<Void> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.DELETE, null, Void.class);
- assertEquals(HttpStatus.NO_CONTENT, responseEntity.getStatusCode());
- }
-
- @Test
- public void testDeleteNs_nsRequestProcessingExceptionThrown_returnInlineResponse400() {
- final String nsInstId = UUID.randomUUID().toString();
- final String message = "Unable to process request";
- doThrow(new NsRequestProcessingException(message, new InlineResponse400().detail(message)))
- .when(mockedJobExecutorService).runDeleteNsJob(eq(nsInstId));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + nsInstId;
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.DELETE, null, InlineResponse400.class);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
- }
-
- @Test
- public void testInstantiateNs_ValidInstantiateNsRequest() {
-
- final InstantiateNsRequest instantiateNsRequest = getInstantiateNsRequest();
- when(mockedJobExecutorService.runInstantiateNsJob(eq(RANDOM_NS_INST_ID), eq(instantiateNsRequest)))
- .thenReturn(RANDOM_NS_LCM_OP_OCC_ID);
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + RANDOM_NS_INST_ID + "/instantiate";
- final HttpEntity<?> request = new HttpEntity<>(instantiateNsRequest);
- final ResponseEntity<Void> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, Void.class);
- assertEquals(HttpStatus.ACCEPTED, responseEntity.getStatusCode());
-
- final HttpHeaders httpHeaders = responseEntity.getHeaders();
- assertTrue(httpHeaders.containsKey(HttpHeaders.LOCATION));
- final List<String> actual = httpHeaders.get(HttpHeaders.LOCATION);
- assertEquals(1, actual.size());
- assertEquals(EXPECTED_NS_LCM_OP_OCC_REQ_LOCATION_URL, actual.get(0));
- }
-
- @Test
- public void testInstantiateNs_instantiateNsRequest_nsRequestProcessingExceptionThrown_returnInlineResponse400() {
- final String message = "Unable to process request";
- final InstantiateNsRequest instantiateNsRequest = getInstantiateNsRequest();
- when(mockedJobExecutorService.runInstantiateNsJob(eq(RANDOM_NS_INST_ID), eq(instantiateNsRequest)))
- .thenThrow(new NsRequestProcessingException(message, new InlineResponse400().detail(message)));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + RANDOM_NS_INST_ID + "/instantiate";
- final HttpEntity<?> request = new HttpEntity<>(instantiateNsRequest);
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, InlineResponse400.class);
-
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
- }
-
- @Test
- public void testTerminateNs_ValidTerminateNsRequest_Success() {
- final TerminateNsRequest terminateNsRequest = getTerminateNsRequest();
- when(mockedJobExecutorService.runTerminateNsJob(eq(RANDOM_NS_INST_ID), eq(terminateNsRequest)))
- .thenReturn(RANDOM_NS_LCM_OP_OCC_ID);
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + RANDOM_NS_INST_ID + "/terminate";
- final HttpEntity<?> request = new HttpEntity<>(terminateNsRequest);
- final ResponseEntity<Void> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, Void.class);
- assertEquals(HttpStatus.ACCEPTED, responseEntity.getStatusCode());
-
- final HttpHeaders httpHeaders = responseEntity.getHeaders();
- assertTrue(httpHeaders.containsKey(HttpHeaders.LOCATION));
- final List<String> actual = httpHeaders.get(HttpHeaders.LOCATION);
- assertEquals(1, actual.size());
- assertEquals(EXPECTED_NS_LCM_OP_OCC_REQ_LOCATION_URL, actual.get(0));
- }
-
- @Test
- public void testTerminateNs_ValidTerminateNsRequest_nsRequestProcessingExceptionThrown_returnInlineResponse400() {
- final String errorMessage = "ERROR MESSAGE";
- final TerminateNsRequest terminateNsRequest = getTerminateNsRequest();
- when(mockedJobExecutorService.runTerminateNsJob(eq(RANDOM_NS_INST_ID), eq(terminateNsRequest)))
- .thenThrow(new NsRequestProcessingException(errorMessage));
-
- final String baseUrl = getNsLcmBaseUrl() + "/ns_instances/" + RANDOM_NS_INST_ID + "/terminate";
- final HttpEntity<?> request = new HttpEntity<>(terminateNsRequest);
- final ResponseEntity<InlineResponse400> responseEntity =
- testRestTemplate.exchange(baseUrl, HttpMethod.POST, request, InlineResponse400.class);
- assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, responseEntity.getStatusCode());
- assertTrue(responseEntity.hasBody());
- assertNotNull(responseEntity.getBody());
- }
-
- private TerminateNsRequest getTerminateNsRequest() {
- // Only support for the immediate Terminate request; i.e., terminateTime field is empty (not set)
- return new TerminateNsRequest();
- }
-
- private InstantiateNsRequest getInstantiateNsRequest() {
- return new InstantiateNsRequest().nsFlavourId("FLAVOUR_ID");
- }
-
- private CreateNsRequest getCreateNsRequest() {
- return new CreateNsRequest().nsdId(RANDOM_NS_INST_ID);
- }
-
- private String getNsLcmBaseUrl() {
- return "http://localhost:" + port + Constants.NS_LIFE_CYCLE_MANAGEMENT_BASE_URL;
- }
-}
-
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/resources/application.yaml b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/resources/application.yaml
deleted file mode 100644
index 6f2b4d26c5..0000000000
--- a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/test/resources/application.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright © 2020 Nordix Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-spring:
- main:
- allow-bean-definition-overriding: true
- flyway:
- baseline-on-migrate: false
- datasource:
- hikari:
- camunda:
- jdbcUrl: jdbc:h2:mem:example-simple;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
- driver-class-name: org.h2.Driver
- pool-name: ns-lcm-bpmn-pool
- registerMbeans: true
- nfvo:
- jdbcUrl: jdbc:h2:mem:NFVO;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS NFVO;
- driver-class-name: org.h2.Driver
- pool-name: ns-lcm-nfvo-pool
- registerMbeans: true
- jpa:
- generate-ddl: true
- hibernate:
- ddl-auto: create
-logging:
- level:
- org.reflections.Reflections: ERROR
-
-etsi-catalog-manager:
- base:
- endpoint: http://modeling-etsicatalog.onap:8806/api
diff --git a/so-monitoring/pom.xml b/so-monitoring/pom.xml
deleted file mode 100644
index 8c6d397bae..0000000000
--- a/so-monitoring/pom.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so</groupId>
- <artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
-
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring</artifactId>
-
- <packaging>pom</packaging>
- <name>${project.artifactId}</name>
-
- <properties>
- <java.version>11</java.version>
- <version.java.compiler>11</version.java.compiler>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>${version.java.compiler}</source>
- <target>${version.java.compiler}</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <modules>
- <module>so-monitoring-ui</module>
- <module>so-monitoring-handler</module>
- <module>so-monitoring-service</module>
- </modules>
-</project>
diff --git a/so-monitoring/so-monitoring-handler/pom.xml b/so-monitoring/so-monitoring-handler/pom.xml
deleted file mode 100644
index f199a9f91f..0000000000
--- a/so-monitoring/so-monitoring-handler/pom.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-monitoring-handler</artifactId>
- <name>${project.artifactId}</name>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- </properties>
-
-
- <dependencies>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-ext</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>nl.jqno.equalsverifier</groupId>
- <artifactId>equalsverifier</artifactId>
- <version>3.4.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onap.so</groupId>
- <artifactId>common</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-</project>
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java
deleted file mode 100644
index 7ef00bd798..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.camunda.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class ActivityInstance {
-
- private String activityId;
- private String activityName;
- private String activityType;
- private String processInstanceId;
- private String calledProcessInstanceId;
- private String startTime;
- private String endTime;
- private String durationInMillis;
-
- public ActivityInstance() {}
-
-
- /**
- * @return the activityId
- */
- public String getActivityId() {
- return activityId;
- }
-
- /**
- * @param activityId the activityId to set
- */
- public void setActivityId(final String activityId) {
- this.activityId = activityId;
- }
-
- /**
- * @return the activityName
- */
- public String getActivityName() {
- return activityName;
- }
-
- /**
- * @param activityName the activityName to set
- */
- public void setActivityName(final String activityName) {
- this.activityName = activityName;
- }
-
- /**
- * @return the activityType
- */
- public String getActivityType() {
- return activityType;
- }
-
- /**
- * @param activityType the activityType to set
- */
- public void setActivityType(final String activityType) {
- this.activityType = activityType;
- }
-
- /**
- * @return the processInstanceId
- */
- public String getProcessInstanceId() {
- return processInstanceId;
- }
-
- /**
- * @param processInstanceId the processInstanceId to set
- */
- public void setProcessInstanceId(final String processInstanceId) {
- this.processInstanceId = processInstanceId;
- }
-
- /**
- * @return the calledProcessInstanceId
- */
- public String getCalledProcessInstanceId() {
- return calledProcessInstanceId;
- }
-
- /**
- * @param calledProcessInstanceId the calledProcessInstanceId to set
- */
- public void setCalledProcessInstanceId(final String calledProcessInstanceId) {
- this.calledProcessInstanceId = calledProcessInstanceId;
- }
-
- /**
- * @return the startTime
- */
- public String getStartTime() {
- return startTime;
- }
-
- /**
- * @param startTime the startTime to set
- */
- public void setStartTime(final String startTime) {
- this.startTime = startTime;
- }
-
- /**
- * @return the endTime
- */
- public String getEndTime() {
- return endTime;
- }
-
- /**
- * @param endTime the endTime to set
- */
- public void setEndTime(final String endTime) {
- this.endTime = endTime;
- }
-
- /**
- * @return the durationInMillis
- */
- public String getDurationInMillis() {
- return durationInMillis;
- }
-
- /**
- * @param durationInMillis the durationInMillis to set
- */
- public void setDurationInMillis(final String durationInMillis) {
- this.durationInMillis = durationInMillis;
- }
-
- @JsonIgnore
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((activityId == null) ? 0 : activityId.hashCode());
- result = prime * result + ((activityName == null) ? 0 : activityName.hashCode());
- result = prime * result + ((activityType == null) ? 0 : activityType.hashCode());
- result = prime * result + ((calledProcessInstanceId == null) ? 0 : calledProcessInstanceId.hashCode());
- result = prime * result + ((durationInMillis == null) ? 0 : durationInMillis.hashCode());
- result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
- result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
- result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
- return result;
- }
-
- @JsonIgnore
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ActivityInstance) {
- final ActivityInstance other = (ActivityInstance) obj;
- return isEqual(activityId, other.activityId) && isEqual(activityName, other.activityName)
- && isEqual(activityType, other.activityType) && isEqual(processInstanceId, other.processInstanceId)
- && isEqual(calledProcessInstanceId, other.calledProcessInstanceId)
- && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime)
- && isEqual(durationInMillis, other.durationInMillis);
- }
- return false;
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java
deleted file mode 100644
index 76dc096c45..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.camunda.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class ProcessDefinition {
-
- private String id;
- private String bpmn20Xml;
-
- public ProcessDefinition() {}
-
- /**
- * @return the id
- */
- public String getId() {
- return id;
- }
-
- /**
- * @param id the id to set
- */
- public void setId(final String id) {
- this.id = id;
- }
-
- /**
- * @return the bpmn20Xml
- */
- public String getBpmn20Xml() {
- return bpmn20Xml;
- }
-
- /**
- * @param bpmn20Xml the bpmn20Xml to set
- */
- public void setBpmn20Xml(final String bpmn20Xml) {
- this.bpmn20Xml = bpmn20Xml;
- }
-
- @JsonIgnore
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((bpmn20Xml == null) ? 0 : bpmn20Xml.hashCode());
- return result;
- }
-
- @JsonIgnore
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessDefinition) {
- final ProcessDefinition other = (ProcessDefinition) obj;
- return isEqual(id, other.id) && isEqual(bpmn20Xml, other.bpmn20Xml);
- }
- return false;
- }
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java
deleted file mode 100644
index 872fae50b0..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.camunda.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class ProcessInstance {
-
- private String id;
- private String processDefinitionId;
- private String processDefinitionName;
- private String superProcessInstanceId;
-
- public ProcessInstance() {}
-
- /**
- * @return the id
- */
- public String getId() {
- return id;
- }
-
- /**
- * @param id the id to set
- */
- public void setId(final String id) {
- this.id = id;
- }
-
-
- /**
- * @return the processDefinitionId
- */
- public String getProcessDefinitionId() {
- return processDefinitionId;
- }
-
- /**
- * @param processDefinitionId the processDefinitionId to set
- */
- public void setProcessDefinitionId(final String processDefinitionId) {
- this.processDefinitionId = processDefinitionId;
- }
-
- /**
- * @return the processDefinitionName
- */
- public String getProcessDefinitionName() {
- return processDefinitionName;
- }
-
- /**
- * @param processDefinitionName the processDefinitionName to set
- */
- public void setProcessDefinitionName(final String processDefinitionName) {
- this.processDefinitionName = processDefinitionName;
- }
-
- /**
- * @return the superProcessInstanceId
- */
- public String getSuperProcessInstanceId() {
- return superProcessInstanceId;
- }
-
- /**
- * @param superProcessInstanceId the superProcessInstanceId to set
- */
- public void setSuperProcessInstanceId(final String superProcessInstanceId) {
- this.superProcessInstanceId = superProcessInstanceId;
- }
-
-
- @JsonIgnore
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
- result = prime * result + ((processDefinitionName == null) ? 0 : processDefinitionName.hashCode());
- result = prime * result + ((superProcessInstanceId == null) ? 0 : superProcessInstanceId.hashCode());
- return result;
- }
-
- @JsonIgnore
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessInstance) {
- final ProcessInstance other = (ProcessInstance) obj;
- return isEqual(id, other.id) && isEqual(processDefinitionId, other.processDefinitionId)
- && isEqual(processDefinitionName, other.processDefinitionName)
- && isEqual(superProcessInstanceId, other.superProcessInstanceId);
- }
-
- return false;
- }
-
- @JsonIgnore
- @Override
- public String toString() {
- return "ProcessInstance [id=" + id + ", processDefinitionId=" + processDefinitionId + ", processDefinitionName="
- + processDefinitionName + "]";
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java
deleted file mode 100644
index 6d7da58f90..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.camunda.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class ProcessInstanceVariable {
-
- private String name;
- private Object value;
- private String type;
-
- public ProcessInstanceVariable() {}
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(final String name) {
- this.name = name;
- }
-
- /**
- * @return the value
- */
- public Object getValue() {
- return value;
- }
-
- /**
- * @param value the value to set
- */
- public void setValue(final Object value) {
- this.value = value;
- }
-
- /**
- * @return the type
- */
- public String getType() {
- return type;
- }
-
- /**
- * @param type the type to set
- */
- public void setType(final String type) {
- this.type = type;
- }
-
- @JsonIgnore
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- return result;
- }
-
- @JsonIgnore
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessInstanceVariable) {
- final ProcessInstanceVariable other = (ProcessInstanceVariable) obj;
- return isEqual(name, other.name) && isEqual(value, other.value) && isEqual(type, other.type);
- }
-
- return false;
- }
-
- @JsonIgnore
- @Override
- public String toString() {
- return "ProcessInstance [name=" + name + ", value=" + value + ", type=" + type + "]";
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java
deleted file mode 100644
index 6c1d1ad99f..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.camunda.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class SoActiveInfraRequests {
-
- private String requestId;
- private String serviceInstanceId;
- private String networkId;
- private String startTime;
- private String endTime;
- private String requestStatus;
- private String serviceInstanceName;
- private String serviceType;
-
- /**
- * @return the requestId
- */
- public String getRequestId() {
- return requestId;
- }
-
- /**
- * @param requestId the requestId to set
- */
- public void setRequestId(final String requestId) {
- this.requestId = requestId;
- }
-
- /**
- * @return the serviceInstanceId
- */
- public String getServiceInstanceId() {
- return serviceInstanceId;
- }
-
- /**
- * @param serviceInstanceId the serviceInstanceId to set
- */
- public void setServiceInstanceId(final String serviceInstanceId) {
- this.serviceInstanceId = serviceInstanceId;
- }
-
- /**
- * @return the networkId
- */
- public String getNetworkId() {
- return networkId;
- }
-
- /**
- * @param networkId the networkId to set
- */
- public void setNetworkId(final String networkId) {
- this.networkId = networkId;
- }
-
- /**
- * @return the startTime
- */
- public String getStartTime() {
- return startTime;
- }
-
- /**
- * @param startTime the startTime to set
- */
- public void setStartTime(final String startTime) {
- this.startTime = startTime;
- }
-
- /**
- * @return the endTime
- */
- public String getEndTime() {
- return endTime;
- }
-
- /**
- * @param endTime the endTime to set
- */
- public void setEndTime(final String endTime) {
- this.endTime = endTime;
- }
-
- /**
- * @return the requestStatus
- */
- public String getRequestStatus() {
- return requestStatus;
- }
-
- /**
- * @param requestStatus the requestStatus to set
- */
- public void setRequestStatus(final String requestStatus) {
- this.requestStatus = requestStatus;
- }
-
- /**
- * @return the serviceInstanceName
- */
- public String getServiceInstanceName() {
- return serviceInstanceName;
- }
-
- /**
- * @param serviceInstanceName the serviceInstanceName to set
- */
- public void setServiceInstanceName(final String serviceInstanceName) {
- this.serviceInstanceName = serviceInstanceName;
- }
-
- /**
- * @return the serviceType
- */
- public String getServiceType() {
- return serviceType;
- }
-
- /**
- * @param serviceType the serviceType to set
- */
- public void setServiceType(final String serviceType) {
- this.serviceType = serviceType;
- }
-
- @JsonIgnore
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
- result = prime * result + ((networkId == null) ? 0 : networkId.hashCode());
- result = prime * result + ((requestId == null) ? 0 : requestId.hashCode());
- result = prime * result + ((requestStatus == null) ? 0 : requestStatus.hashCode());
- result = prime * result + ((serviceInstanceId == null) ? 0 : serviceInstanceId.hashCode());
- result = prime * result + ((serviceInstanceName == null) ? 0 : serviceInstanceName.hashCode());
- result = prime * result + ((serviceType == null) ? 0 : serviceType.hashCode());
- result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
- return result;
- }
-
- @JsonIgnore
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof SoActiveInfraRequests) {
- SoActiveInfraRequests other = (SoActiveInfraRequests) obj;
- return isEqual(requestId, other.requestId) && isEqual(serviceInstanceId, other.serviceInstanceId)
- && isEqual(networkId, other.networkId) && isEqual(startTime, other.startTime)
- && isEqual(endTime, other.endTime) && isEqual(requestStatus, other.requestStatus)
- && isEqual(serviceInstanceName, other.serviceInstanceName)
- && isEqual(serviceType, other.serviceType);
- }
-
- return false;
- }
-
- @JsonIgnore
- @Override
- public String toString() {
- return "SoActiveInfraRequests [requestId=" + requestId + ", serviceInstanceId=" + serviceInstanceId
- + ", networkId=" + networkId + ", startTime=" + startTime + ", endTime=" + endTime + ", requestStatus="
- + requestStatus + ", serviceInstanceName=" + serviceInstanceName + ", serviceType=" + serviceType + "]";
- }
-
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaConfiguration.java
deleted file mode 100644
index e5194da8f0..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration.camunda;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-
-@Configuration
-public class CamundaConfiguration {
-
- @Bean
- public CamundaRestUrlProvider camundaRestUrlProvider(@Value(value = "${camunda.rest.api.url}") final String httpURL,
- @Value(value = "${camunda.rest.api.engine:default}") final String engineName) {
- return new CamundaRestUrlProvider(httpURL, engineName);
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java
deleted file mode 100644
index ab23f24b2a..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration.camunda;
-
-import java.net.URI;
-import org.springframework.stereotype.Service;
-import org.springframework.web.util.UriComponentsBuilder;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Service
-public class CamundaRestUrlProvider {
-
- private static final String HISTORY_PATH = "history";
- private final URI baseUri;
-
- public CamundaRestUrlProvider(final String httpUrl, final String engineName) {
- this.baseUri = UriComponentsBuilder.fromHttpUrl(httpUrl).path(engineName).build().toUri();
- }
-
- /**
- * see {@link <a href=
- * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance-query/">Get
- * Process Instances</a>}.
- *
- * @param requestId the request ID
- * @return URL
- */
- public String getHistoryProcessInstanceUrl(final String requestId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("process-instance")
- .query("variables=requestId_eq_{requestID}").buildAndExpand(requestId).toString();
- }
-
- /**
- * see {@link <a href=
- * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance/">Get Single
- * Process Instance</a>}.
- *
- * @param processInstanceId the process instance id.
- * @return URL
- */
- public String getSingleProcessInstanceUrl(final String processInstanceId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("process-instance")
- .pathSegment(processInstanceId).build().toString();
- }
-
- /**
- * see {@link <a href= "https://docs.camunda.org/manual/7.5/reference/rest/process-definition/get-xml/">Get BPMN 2.0
- * XML</a>}.
- *
- * @param processDefinitionId the process definition id.
- * @return URL
- */
- public String getProcessDefinitionUrl(final String processDefinitionId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment("process-definition").pathSegment(processDefinitionId)
- .pathSegment("xml").build().toString();
- }
-
- /**
- * see {@link <a href=
- * "https://docs.camunda.org/manual/7.5/reference/rest/history/activity-instance/get-activity-instance/">Get Single
- * Activity Instance (Historic)</a>}.
- *
- * @param processInstanceId the process instance id.
- * @return URL
- */
- public String getActivityInstanceUrl(final String processInstanceId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("activity-instance")
- .query("processInstanceId={processInstanceId}").queryParam("sortBy", "startTime")
- .queryParam("sortOrder", "asc").buildAndExpand(processInstanceId).toString();
- }
-
- /**
- * see {@link <a href=
- * "https://docs.camunda.org/manual/7.5/reference/rest/history/variable-instance/get-variable-instance/">Get Single
- * Variable Instance</a>}.
- *
- * @param processInstanceId the process instance id.
- * @return URL
- */
- public String getProcessInstanceVariablesUrl(final String processInstanceId) {
- return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("variable-instance")
- .query("processInstanceId={processInstanceId}").buildAndExpand(processInstanceId).toString();
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseConfiguration.java
deleted file mode 100644
index 359c334cde..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseConfiguration.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.monitoring.configuration.database;
-
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class DatabaseConfiguration {
-
- @Bean
- public DatabaseUrlProvider databaseUrlProvider(
- @Value(value = "${mso.database.rest.api.url}") final String baseUrl) {
- return new DatabaseUrlProvider(baseUrl);
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java
deleted file mode 100644
index 67f588eb54..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration.database;
-
-import java.net.URI;
-import org.springframework.web.util.UriComponentsBuilder;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class DatabaseUrlProvider {
-
- private final URI baseUri;
-
- public DatabaseUrlProvider(final String baseUrl) {
- this.baseUri = UriComponentsBuilder.fromHttpUrl(baseUrl).build().toUri();
- }
-
- public String getSearchUrl(final long from, final long to, final Integer maxResult) {
- final UriComponentsBuilder builder = UriComponentsBuilder.fromUri(baseUri).pathSegment("v1")
- .pathSegment("getInfraActiveRequests").queryParam("from", from).queryParam("to", to);
- if (maxResult != null) {
- return builder.queryParam("maxResult", maxResult).build().toString();
- }
-
- return builder.build().toString();
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java
deleted file mode 100644
index 4d0fd443e9..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.monitoring.configuration.rest;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-/**
- * @author waqas.ikram@ericsson, eoin.hanan@ericsson.com
- */
-@Configuration
-public class CorsConfigurer {
-
- @Bean
- public CorsFilter corsFilter() {
- final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues());
- return new CorsFilter(source);
- }
-}
-
-
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java
deleted file mode 100644
index 6d8d82bc44..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration.rest;
-
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import org.onap.so.configuration.rest.BasicHttpHeadersProvider;
-import org.onap.so.configuration.rest.HttpHeadersProvider;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-@Configuration
-public class HttpServiceProviderConfiguration {
-
- public static final String DATABASE_HTTP_REST_SERVICE_PROVIDER = "databaseHttpRestServiceProvider";
- public static final String CAMUNDA_HTTP_REST_SERVICE_PROVIDER = "camundaHttpRestServiceProvider";
-
- @Bean
- @Qualifier(CAMUNDA_HTTP_REST_SERVICE_PROVIDER)
- public HttpRestServiceProvider camundaHttpRestServiceProvider(
- @Qualifier(CONFIGURABLE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate,
- @Value(value = "${camunda.rest.api.auth:#{null}}") final String authorization) {
- return getHttpRestServiceProvider(restTemplate, new BasicHttpHeadersProvider(authorization));
- }
-
- @Bean
- @Qualifier(DATABASE_HTTP_REST_SERVICE_PROVIDER)
- public HttpRestServiceProvider databaseHttpRestServiceProvider(
- @Qualifier(CONFIGURABLE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate,
- @Value(value = "${mso.database.rest.api.auth:#{null}}") final String authorization) {
- return getHttpRestServiceProvider(restTemplate, new BasicHttpHeadersProvider(authorization));
- }
-
- private HttpRestServiceProvider getHttpRestServiceProvider(final RestTemplate restTemplate,
- final HttpHeadersProvider httpHeadersProvider) {
- return new HttpRestServiceProviderImpl(restTemplate, httpHeadersProvider);
- }
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java
deleted file mode 100644
index b701203564..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.db.service;
-
-import java.util.List;
-import java.util.Map;
-import org.onap.so.monitoring.model.SoInfraRequest;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public interface DatabaseServiceProvider {
-
- List<SoInfraRequest> getSoInfraRequest(final Map<String, String[]> filters, final long startTime,
- final long endTime, final Integer maxResult);
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java
deleted file mode 100644
index 4278a26a69..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.db.service;
-
-import static org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration.DATABASE_HTTP_REST_SERVICE_PROVIDER;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import org.onap.so.monitoring.camunda.model.SoActiveInfraRequests;
-import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider;
-import org.onap.so.monitoring.model.SoInfraRequest;
-import org.onap.so.monitoring.model.SoInfraRequestBuilder;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-import com.google.common.base.Optional;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Service
-public class DatabaseServiceProviderImpl implements DatabaseServiceProvider {
-
- private final DatabaseUrlProvider urlProvider;
-
- private final HttpRestServiceProvider httpRestServiceProvider;
-
- @Autowired
- public DatabaseServiceProviderImpl(final DatabaseUrlProvider urlProvider,
- @Qualifier(DATABASE_HTTP_REST_SERVICE_PROVIDER) @Autowired final HttpRestServiceProvider httpRestServiceProvider) {
- this.urlProvider = urlProvider;
- this.httpRestServiceProvider = httpRestServiceProvider;
- }
-
- @Override
- public List<SoInfraRequest> getSoInfraRequest(final Map<String, String[]> filters, final long startTime,
- final long endTime, final Integer maxResult) {
- final String url = urlProvider.getSearchUrl(startTime, endTime, maxResult);
-
- final Optional<SoActiveInfraRequests[]> optionalRequests =
- httpRestServiceProvider.post(filters, url, SoActiveInfraRequests[].class);
- if (optionalRequests.isPresent()) {
- return getSoInfraRequest(optionalRequests.get());
- }
- return Collections.emptyList();
- }
-
-
- private List<SoInfraRequest> getSoInfraRequest(final SoActiveInfraRequests[] requests) {
- final List<SoInfraRequest> result = new ArrayList<>(requests.length);
- for (final SoActiveInfraRequests activeRequests : requests) {
- final SoInfraRequest soInfraRequest =
- new SoInfraRequestBuilder().setRequestId(activeRequests.getRequestId())
- .setServiceInstanceId(activeRequests.getServiceInstanceId())
- .setNetworkId(activeRequests.getNetworkId()).setEndTime(activeRequests.getEndTime())
- .setRequestStatus(activeRequests.getRequestStatus())
- .setServiceInstanceName(activeRequests.getServiceInstanceName())
- .setServiceType(activeRequests.getServiceType()).setStartTime(activeRequests.getStartTime())
- .build();
- result.add(soInfraRequest);
-
- }
- return result;
- }
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ActivityInstanceDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ActivityInstanceDetail.java
deleted file mode 100644
index 2b26a4a25c..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ActivityInstanceDetail.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class ActivityInstanceDetail {
- private final String activityId;
- private final String activityName;
- private final String activityType;
- private final String processInstanceId;
- private final String calledProcessInstanceId;
- private final String startTime;
- private final String endTime;
- private final String durationInMilliseconds;
-
- public ActivityInstanceDetail(final ActivityInstanceDetailBuilder builder) {
- this.activityId = builder.activityId;
- this.activityName = builder.activityName;
- this.activityType = builder.activityType;
- this.processInstanceId = builder.processInstanceId;
- this.calledProcessInstanceId = builder.calledProcessInstanceId;
- this.startTime = builder.startTime;
- this.endTime = builder.endTime;
- this.durationInMilliseconds = builder.durationInMilliseconds;
- }
-
- /**
- * @return the activityId
- */
- public String getActivityId() {
- return activityId;
- }
-
- /**
- * @return the activityName
- */
- public String getActivityName() {
- return activityName;
- }
-
- /**
- * @return the activityType
- */
- public String getActivityType() {
- return activityType;
- }
-
- /**
- * @return the processInstanceId
- */
- public String getProcessInstanceId() {
- return processInstanceId;
- }
-
- /**
- * @return the calledProcessInstanceId
- */
- public String getCalledProcessInstanceId() {
- return calledProcessInstanceId;
- }
-
- /**
- * @return the startTime
- */
- public String getStartTime() {
- return startTime;
- }
-
- /**
- * @return the endTime
- */
- public String getEndTime() {
- return endTime;
- }
-
- /**
- * @return the durationInMillis
- */
- public String getDurationInMillis() {
- return durationInMilliseconds;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((activityId == null) ? 0 : activityId.hashCode());
- result = prime * result + ((activityName == null) ? 0 : activityName.hashCode());
- result = prime * result + ((activityType == null) ? 0 : activityType.hashCode());
- result = prime * result + ((calledProcessInstanceId == null) ? 0 : calledProcessInstanceId.hashCode());
- result = prime * result + ((durationInMilliseconds == null) ? 0 : durationInMilliseconds.hashCode());
- result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
- result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
- result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
-
- if (obj instanceof ActivityInstanceDetail) {
- final ActivityInstanceDetail other = (ActivityInstanceDetail) obj;
- return isEqual(activityId, other.activityId) && isEqual(activityName, other.activityName)
- && isEqual(activityType, other.activityType) && isEqual(processInstanceId, other.processInstanceId)
- && isEqual(calledProcessInstanceId, other.calledProcessInstanceId)
- && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime)
- && isEqual(durationInMilliseconds, other.durationInMilliseconds);
- }
-
- return false;
- }
-
-
- public static final class ActivityInstanceDetailBuilder {
-
- private String activityId;
- private String activityName;
- private String activityType;
- private String processInstanceId;
- private String calledProcessInstanceId;
- private String startTime;
- private String endTime;
- private String durationInMilliseconds;
-
- public ActivityInstanceDetailBuilder activityId(final String activityId) {
- this.activityId = activityId;
- return this;
- }
-
- public ActivityInstanceDetailBuilder activityName(final String activityName) {
- this.activityName = activityName;
- return this;
- }
-
- public ActivityInstanceDetailBuilder activityType(final String activityType) {
- this.activityType = activityType;
- return this;
- }
-
- public ActivityInstanceDetailBuilder processInstanceId(final String processInstanceId) {
- this.processInstanceId = processInstanceId;
- return this;
- }
-
- public ActivityInstanceDetailBuilder calledProcessInstanceId(final String calledProcessInstanceId) {
- this.calledProcessInstanceId = calledProcessInstanceId;
- return this;
- }
-
- public ActivityInstanceDetailBuilder startTime(final String startTime) {
- this.startTime = startTime;
- return this;
- }
-
- public ActivityInstanceDetailBuilder endTime(final String endTime) {
- this.endTime = endTime;
- return this;
- }
-
- public ActivityInstanceDetailBuilder durationInMilliseconds(final String durationInMilliseconds) {
- this.durationInMilliseconds = durationInMilliseconds;
- return this;
- }
-
- public ActivityInstanceDetail build() {
- return new ActivityInstanceDetail(this);
- }
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessDefinitionDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessDefinitionDetail.java
deleted file mode 100644
index 5e988f6aa6..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessDefinitionDetail.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class ProcessDefinitionDetail {
-
- private final String processDefinitionId;
- private final String processDefinitionXml;
-
- public ProcessDefinitionDetail(final String processDefinitionId, final String processDefinitionXml) {
- this.processDefinitionId = processDefinitionId;
- this.processDefinitionXml = processDefinitionXml;
- }
-
- /**
- * @return the processDefinitionId
- */
- public String getProcessDefinitionId() {
- return processDefinitionId;
- }
-
- /**
- * @return the processDefinitionXml
- */
- public String getProcessDefinitionXml() {
- return processDefinitionXml;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
- result = prime * result + ((processDefinitionXml == null) ? 0 : processDefinitionXml.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessDefinitionDetail) {
- final ProcessDefinitionDetail other = (ProcessDefinitionDetail) obj;
- return isEqual(processDefinitionId, other.processDefinitionId)
- && isEqual(processDefinitionXml, other.processDefinitionXml);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return "ProcessDefinitionDetail [processDefinitionId=" + processDefinitionId + ", processDefinitionXml="
- + processDefinitionXml + "]";
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceDetail.java
deleted file mode 100644
index 2f8e756b8c..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceDetail.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class ProcessInstanceDetail {
-
- private final String processInstanceId;
- private final String processDefinitionId;
- private final String processDefinitionName;
- private final String superProcessInstanceId;
-
-
- public ProcessInstanceDetail(final String processInstanceId, final String processDefinitionId,
- final String processDefinitionName, final String superProcessInstanceId) {
- this.processInstanceId = processInstanceId;
- this.processDefinitionId = processDefinitionId;
- this.processDefinitionName = processDefinitionName;
- this.superProcessInstanceId = superProcessInstanceId;
- }
-
- /**
- * @return the processInstanceId
- */
- public String getProcessInstanceId() {
- return processInstanceId;
- }
-
- /**
- * @return the processDefinitionId
- */
- public String getProcessDefinitionId() {
- return processDefinitionId;
- }
-
- /**
- * @return the processDefinitionName
- */
- public String getProcessDefinitionName() {
- return processDefinitionName;
- }
-
- /**
- * @return the superProcessInstanceId
- */
- public String getSuperProcessInstanceId() {
- return superProcessInstanceId;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
- result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
- result = prime * result + ((processDefinitionName == null) ? 0 : processDefinitionName.hashCode());
- result = prime * result + ((superProcessInstanceId == null) ? 0 : superProcessInstanceId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessInstanceDetail) {
- final ProcessInstanceDetail other = (ProcessInstanceDetail) obj;
-
- return isEqual(processInstanceId, other.processInstanceId)
- && isEqual(processDefinitionId, other.processDefinitionId)
- && isEqual(processDefinitionName, other.processDefinitionName)
- && isEqual(superProcessInstanceId, other.superProcessInstanceId);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return "ProcessInstanceDetail [processInstanceId=" + processInstanceId + ", processDefinitionId="
- + processDefinitionId + ", processDefinitionName=" + processDefinitionName + ", superProcessInstanceId="
- + superProcessInstanceId + "]";
- }
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceIdDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceIdDetail.java
deleted file mode 100644
index 0f34664935..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceIdDetail.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class ProcessInstanceIdDetail {
-
- private final String processInstanceId;
-
-
- public ProcessInstanceIdDetail(final String processInstanceId) {
- this.processInstanceId = processInstanceId;
- }
-
- /**
- * @return the processInstanceId
- */
- public String getProcessInstanceId() {
- return processInstanceId;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessInstanceIdDetail) {
- final ProcessInstanceIdDetail other = (ProcessInstanceIdDetail) obj;
-
- return isEqual(processInstanceId, other.processInstanceId);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return "ProcessInstanceIdDetail [processInstanceId=" + processInstanceId + "]";
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceVariableDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceVariableDetail.java
deleted file mode 100644
index a52121d7c5..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/ProcessInstanceVariableDetail.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-public class ProcessInstanceVariableDetail {
-
- private final String name;
- private final Object value;
- private final String type;
-
- public ProcessInstanceVariableDetail(final String name, final Object value, final String type) {
- this.name = name;
- this.value = value;
- this.type = type;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @return the value
- */
- public Object getValue() {
- return value;
- }
-
- /**
- * @return the type
- */
- public String getType() {
- return type;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof ProcessInstanceVariableDetail) {
- final ProcessInstanceVariableDetail other = (ProcessInstanceVariableDetail) obj;
-
- return isEqual(name, other.name) && isEqual(value, other.value) && isEqual(type, other.type);
- }
- return false;
- }
-
- @Override
- public String toString() {
- return "ProcessInstanceVariableDetail [name=" + name + ", value=" + value + ", type=" + type + "]";
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequest.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequest.java
deleted file mode 100644
index 53b928b88e..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class SoInfraRequest {
-
- private final String requestId;
- private final String serviceInstanceId;
- private final String serviceInstanceName;
- private final String networkId;
- private final String requestStatus;
- private final String serviceType;
- private final String startTime;
- private final String endTime;
-
- public SoInfraRequest(final SoInfraRequestBuilder requestBuilder) {
- this.requestId = requestBuilder.getRequestId();
- this.serviceInstanceId = requestBuilder.getServiceInstanceId();
- this.serviceInstanceName = requestBuilder.getServiceInstanceName();
- this.networkId = requestBuilder.getNetworkId();
- this.requestStatus = requestBuilder.getRequestStatus();
- this.serviceType = requestBuilder.getServiceType();
- this.startTime = requestBuilder.getStartTime();
- this.endTime = requestBuilder.getEndTime();
- }
-
- /**
- * @return the requestId
- */
- public String getRequestId() {
- return requestId;
- }
-
- /**
- * @return the serviceInstanceId
- */
- public String getServiceInstanceId() {
- return serviceInstanceId;
- }
-
- /**
- * @return the serviceInstanceName
- */
- public String getServiceInstanceName() {
- return serviceInstanceName;
- }
-
- /**
- * @return the networkId
- */
- public String getNetworkId() {
- return networkId;
- }
-
- /**
- * @return the requestStatus
- */
- public String getRequestStatus() {
- return requestStatus;
- }
-
- /**
- * @return the serviceType
- */
- public String getServiceType() {
- return serviceType;
- }
-
- /**
- * @return the startTime
- */
- public String getStartTime() {
- return startTime;
- }
-
- /**
- * @return the endTime
- */
- public String getEndTime() {
- return endTime;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
- result = prime * result + ((networkId == null) ? 0 : networkId.hashCode());
- result = prime * result + ((requestId == null) ? 0 : requestId.hashCode());
- result = prime * result + ((requestStatus == null) ? 0 : requestStatus.hashCode());
- result = prime * result + ((serviceInstanceId == null) ? 0 : serviceInstanceId.hashCode());
- result = prime * result + ((serviceInstanceName == null) ? 0 : serviceInstanceName.hashCode());
- result = prime * result + ((serviceType == null) ? 0 : serviceType.hashCode());
- result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj instanceof SoInfraRequest) {
- final SoInfraRequest other = (SoInfraRequest) obj;
- return isEqual(requestId, other.requestId) && isEqual(serviceInstanceId, other.serviceInstanceId)
- && isEqual(serviceInstanceName, other.serviceInstanceName) && isEqual(networkId, other.networkId)
- && isEqual(requestStatus, other.requestStatus) && isEqual(serviceType, other.serviceType)
- && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime);
- }
- return false;
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequestBuilder.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequestBuilder.java
deleted file mode 100644
index 235c481930..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/model/SoInfraRequestBuilder.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.model;
-
-import java.sql.Timestamp;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class SoInfraRequestBuilder {
-
- private String requestId;
- private String serviceInstanceId;
- private String serviceInstanceName;
- private String networkId;
- private String requestStatus;
- private String serviceType;
- private String startTime;
- private String endTime;
-
- public SoInfraRequestBuilder setRequestId(final String requestId) {
- this.requestId = requestId;
- return this;
- }
-
- public SoInfraRequestBuilder setServiceInstanceId(final String serviceInstanceId) {
- this.serviceInstanceId = serviceInstanceId;
- return this;
- }
-
- public SoInfraRequestBuilder setServiceInstanceName(final String serviceInstanceName) {
- this.serviceInstanceName = serviceInstanceName;
- return this;
- }
-
- public SoInfraRequestBuilder setNetworkId(final String networkId) {
- this.networkId = networkId;
- return this;
- }
-
- public SoInfraRequestBuilder setRequestStatus(final String requestStatus) {
- this.requestStatus = requestStatus;
- return this;
- }
-
- public SoInfraRequestBuilder setServiceType(final String serviceType) {
- this.serviceType = serviceType;
- return this;
- }
-
- public SoInfraRequestBuilder setEndTime(final String endTime) {
- this.endTime = endTime;
- return this;
- }
-
- public SoInfraRequestBuilder setEndTime(final Timestamp endTime) {
- this.endTime = endTime != null ? endTime.toString() : null;
- return this;
- }
-
-
- public SoInfraRequestBuilder setStartTime(final String startTime) {
- this.startTime = startTime;
- return this;
- }
-
- public SoInfraRequestBuilder setStartTime(final Timestamp startTime) {
- this.startTime = startTime != null ? startTime.toString() : null;
- return this;
- }
-
- public SoInfraRequest build() {
- return new SoInfraRequest(this);
- }
-
- /**
- * @return the requestId
- */
- public String getRequestId() {
- return requestId;
- }
-
- /**
- * @return the serviceInstanceId
- */
- public String getServiceInstanceId() {
- return serviceInstanceId;
- }
-
- /**
- * @return the serviceInstanceName
- */
- public String getServiceInstanceName() {
- return serviceInstanceName;
- }
-
- /**
- * @return the networkId
- */
- public String getNetworkId() {
- return networkId;
- }
-
- /**
- * @return the requestStatus
- */
- public String getRequestStatus() {
- return requestStatus;
- }
-
- /**
- * @return the serviceType
- */
- public String getServiceType() {
- return serviceType;
- }
-
- /**
- * @return the startTime
- */
- public String getStartTime() {
- return startTime;
- }
-
- /**
- * @return the endTime
- */
- public String getEndTime() {
- return endTime;
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java
deleted file mode 100644
index 729e57b885..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.service;
-
-import java.util.List;
-import org.onap.so.monitoring.model.ActivityInstanceDetail;
-import org.onap.so.monitoring.model.ProcessDefinitionDetail;
-import org.onap.so.monitoring.model.ProcessInstanceDetail;
-import org.onap.so.monitoring.model.ProcessInstanceIdDetail;
-import org.onap.so.monitoring.model.ProcessInstanceVariableDetail;
-import com.google.common.base.Optional;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public interface CamundaProcessDataServiceProvider {
-
- Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId);
-
- Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId);
-
- Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId);
-
- List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId);
-
- List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId);
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java
deleted file mode 100644
index e0996fd2ad..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.service;
-
-import static org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration.CAMUNDA_HTTP_REST_SERVICE_PROVIDER;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.onap.so.monitoring.camunda.model.ActivityInstance;
-import org.onap.so.monitoring.camunda.model.ProcessDefinition;
-import org.onap.so.monitoring.camunda.model.ProcessInstance;
-import org.onap.so.monitoring.camunda.model.ProcessInstanceVariable;
-import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider;
-import org.onap.so.monitoring.model.ActivityInstanceDetail;
-import org.onap.so.monitoring.model.ProcessDefinitionDetail;
-import org.onap.so.monitoring.model.ProcessInstanceDetail;
-import org.onap.so.monitoring.model.ProcessInstanceIdDetail;
-import org.onap.so.monitoring.model.ProcessInstanceVariableDetail;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-import com.google.common.base.Optional;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Service
-public class CamundaProcessDataServiceProviderImpl implements CamundaProcessDataServiceProvider {
- private static final Logger LOGGER = LoggerFactory.getLogger(CamundaProcessDataServiceProviderImpl.class);
- private final CamundaRestUrlProvider urlProvider;
-
- private final HttpRestServiceProvider httpRestServiceProvider;
-
- @Autowired
- public CamundaProcessDataServiceProviderImpl(final CamundaRestUrlProvider urlProvider,
- @Qualifier(CAMUNDA_HTTP_REST_SERVICE_PROVIDER) @Autowired final HttpRestServiceProvider httpRestServiceProvider) {
- this.urlProvider = urlProvider;
- this.httpRestServiceProvider = httpRestServiceProvider;
- }
-
- @Override
- public Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId) {
- final String url = urlProvider.getHistoryProcessInstanceUrl(requestId);
- final Optional<ProcessInstance[]> processInstances = httpRestServiceProvider.get(url, ProcessInstance[].class);
-
- if (processInstances.isPresent()) {
- final ProcessInstance[] instances = processInstances.get();
- final String message =
- "found process instance for request id: " + requestId + ", result size: " + instances.length;
- LOGGER.debug(message);
-
- if (instances.length > 0) {
- for (int index = 0; index < instances.length; index++) {
- final ProcessInstance processInstance = instances[index];
- if (processInstance.getSuperProcessInstanceId() == null) {
- return Optional.of(new ProcessInstanceIdDetail(processInstance.getId()));
- }
- LOGGER.debug("found sub process instance id with super process instanceId: "
- + processInstance.getSuperProcessInstanceId());
- }
- }
- }
- LOGGER.error("Unable to find process intance for request id: " + requestId);
- return Optional.absent();
- }
-
- @Override
- public Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId) {
- final String url = urlProvider.getSingleProcessInstanceUrl(processInstanceId);
- final Optional<ProcessInstance> processInstances = httpRestServiceProvider.get(url, ProcessInstance.class);
-
- if (processInstances.isPresent()) {
- final ProcessInstance processInstance = processInstances.get();
-
- final ProcessInstanceDetail instanceDetail =
- new ProcessInstanceDetail(processInstance.getId(), processInstance.getProcessDefinitionId(),
- processInstance.getProcessDefinitionName(), processInstance.getSuperProcessInstanceId());
- return Optional.of(instanceDetail);
-
- }
- LOGGER.error("Unable to find process intance for id: " + processInstanceId);
- return Optional.absent();
- }
-
-
- @Override
- public Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId) {
- final String url = urlProvider.getProcessDefinitionUrl(processDefinitionId);
- final Optional<ProcessDefinition> response = httpRestServiceProvider.get(url, ProcessDefinition.class);
- if (response.isPresent()) {
- final ProcessDefinition processDefinition = response.get();
- final String xmlDefinition = processDefinition.getBpmn20Xml();
- if (xmlDefinition != null) {
- return Optional.of(new ProcessDefinitionDetail(processDefinitionId, xmlDefinition));
- }
- }
- LOGGER.error("Unable to find process definition for processDefinitionId: " + processDefinitionId);
- return Optional.absent();
- }
-
- @Override
- public List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId) {
- final String url = urlProvider.getActivityInstanceUrl(processInstanceId);
- final Optional<ActivityInstance[]> response = httpRestServiceProvider.get(url, ActivityInstance[].class);
- if (response.isPresent()) {
- final ActivityInstance[] activityInstances = response.get();
- final List<ActivityInstanceDetail> activityInstanceDetails = new ArrayList<>(activityInstances.length);
- for (int index = 0; index < activityInstances.length; index++) {
-
- final ActivityInstance activityInstance = activityInstances[index];
-
- activityInstanceDetails.add(new ActivityInstanceDetail.ActivityInstanceDetailBuilder()
- .activityId(activityInstance.getActivityId()).activityName(activityInstance.getActivityName())
- .activityType(activityInstance.getActivityType())
- .calledProcessInstanceId(activityInstance.getCalledProcessInstanceId())
- .startTime(activityInstance.getStartTime()).endTime(activityInstance.getEndTime())
- .durationInMilliseconds(activityInstance.getDurationInMillis())
- .processInstanceId(activityInstance.getProcessInstanceId()).build());
-
- }
- return activityInstanceDetails;
- }
- LOGGER.error("Unable to find activity intance detail for process instance id: " + processInstanceId);
- return Collections.emptyList();
- }
-
- @Override
- public List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId) {
- final String url = urlProvider.getProcessInstanceVariablesUrl(processInstanceId);
- final Optional<ProcessInstanceVariable[]> response =
- httpRestServiceProvider.get(url, ProcessInstanceVariable[].class);
- if (response.isPresent()) {
- final ProcessInstanceVariable[] instanceVariables = response.get();
- final List<ProcessInstanceVariableDetail> instanceVariableDetails =
- new ArrayList<>(instanceVariables.length);
- for (int index = 0; index < instanceVariables.length; index++) {
- final ProcessInstanceVariable processInstanceVariable = instanceVariables[index];
- final ProcessInstanceVariableDetail instanceVariableDetail =
- new ProcessInstanceVariableDetail(processInstanceVariable.getName(),
- processInstanceVariable.getValue(), processInstanceVariable.getType());
- instanceVariableDetails.add(instanceVariableDetail);
- }
- return instanceVariableDetails;
- }
- LOGGER.error("Unable to find process intance variable details for process instance id: " + processInstanceId);
- return Collections.emptyList();
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/utils/ObjectEqualsUtils.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/utils/ObjectEqualsUtils.java
deleted file mode 100644
index d8e331baae..0000000000
--- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/utils/ObjectEqualsUtils.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.utils;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class ObjectEqualsUtils {
-
- private ObjectEqualsUtils() {}
-
- public static boolean isEqual(final Object objectA, final Object objectB) {
- if (objectA == null) {
- return objectB == null;
- }
- return objectA.equals(objectB);
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java
deleted file mode 100644
index b08d247106..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration;
-
-import static org.junit.Assert.assertEquals;
-import org.junit.Test;
-import org.onap.so.monitoring.configuration.camunda.CamundaConfiguration;
-import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class CamundaConfigurationTest {
-
- @Test
- public void test_CamundaRestURIConfiguration_ValidUrl() {
- final CamundaConfiguration objUnderTest = new CamundaConfiguration();
- final CamundaRestUrlProvider provider = objUnderTest.camundaRestUrlProvider("http://localhost:8080", "default");
- assertEquals(
- "http://localhost:8080/default/history/activity-instance?processInstanceId=Deadpool&sortBy=startTime&sortOrder=asc",
- provider.getActivityInstanceUrl("Deadpool"));
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java
deleted file mode 100644
index e2d6ddb959..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration;
-
-import static org.junit.Assert.assertEquals;
-import java.util.UUID;
-import org.junit.Test;
-import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class CamundaRestUrlProviderTest {
- private static final String DEFAULT = "default";
- private static final String CAMUNDA_REST_API_URL = "http://localhost:9080/engine-rest/engine/";
- private static final String BASE_URL = CAMUNDA_REST_API_URL + DEFAULT;
- private final CamundaRestUrlProvider objUnderTest = new CamundaRestUrlProvider(CAMUNDA_REST_API_URL, DEFAULT);
- private static final String ID = UUID.randomUUID().toString();
-
-
- @Test
- public void test_GetHistoryProcessInstanceUrl() {
- final String expectedUrl = BASE_URL + "/history/process-instance?variables=requestId_eq_" + ID;
- final String actualUrl = objUnderTest.getHistoryProcessInstanceUrl(ID);
- assertEquals(expectedUrl, actualUrl);
- }
-
- @Test
- public void test_GetProcessInstanceUrl() {
- final String expectedUrl = BASE_URL + "/history/process-instance/" + ID;
- final String actualUrl = objUnderTest.getSingleProcessInstanceUrl(ID);
- assertEquals(expectedUrl, actualUrl);
- }
-
-
- @Test
- public void test_GetProcessDefinitionUrl() {
- final String expectedUrl = BASE_URL + "/process-definition/" + ID + "/xml";
- final String actualUrl = objUnderTest.getProcessDefinitionUrl(ID);
- assertEquals(expectedUrl, actualUrl);
-
- }
-
- @Test
- public void test_GetActivityIntanceUrl() {
- final String expectedUrl =
- BASE_URL + "/history/activity-instance?processInstanceId=" + ID + "&sortBy=startTime&sortOrder=asc";
- final String actualUrl = objUnderTest.getActivityInstanceUrl(ID);
- assertEquals(expectedUrl, actualUrl);
-
- }
-
- @Test
- public void test_GetProcessInstanceVariablesUrl() {
- final String expectedUrl = BASE_URL + "/history/variable-instance?processInstanceId=" + ID;
- final String actualUrl = objUnderTest.getProcessInstanceVariablesUrl(ID);
- assertEquals(expectedUrl, actualUrl);
-
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java
deleted file mode 100644
index d85a03485f..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration;
-
-import static org.junit.Assert.assertNotNull;
-import org.junit.Test;
-import org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class HttpServiceProviderConfigurationTest {
-
- private final HttpServiceProviderConfiguration objUnderTest = new HttpServiceProviderConfiguration();
- private static final String AUTHORIZATION =
- "Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==";
-
- @Test
- public void test_CamundaHttpRestServiceProvider_NotNull() {
-
- final HttpRestServiceProvider serviceProvider =
- objUnderTest.camundaHttpRestServiceProvider(new RestTemplate(), AUTHORIZATION);
-
- assertNotNull(serviceProvider);
- }
-
- @Test
- public void test_DatabaseHttpRestServiceProvider_NotNull() {
-
- final HttpRestServiceProvider serviceProvider =
- objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), AUTHORIZATION);
-
- assertNotNull(serviceProvider);
- }
-
- @Test
- public void test_DatabaseHttpRestServiceProviderWithAuthorizationNullOrEmpty_NotNull() {
-
- HttpRestServiceProvider serviceProvider =
- objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), null);
-
- assertNotNull(serviceProvider);
-
- serviceProvider = objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), "");
-
- assertNotNull(serviceProvider);
- }
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java
deleted file mode 100644
index fbd0aea5ec..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration;
-
-import static org.junit.Assert.assertFalse;
-import java.util.Set;
-import java.util.regex.Pattern;
-import org.junit.Test;
-import org.onap.so.openpojo.rules.ToStringTester;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
-import org.springframework.core.type.filter.RegexPatternTypeFilter;
-import com.openpojo.reflection.filters.FilterPackageInfo;
-import com.openpojo.validation.Validator;
-import com.openpojo.validation.ValidatorBuilder;
-import com.openpojo.validation.test.impl.GetterTester;
-import com.openpojo.validation.test.impl.SetterTester;
-import nl.jqno.equalsverifier.EqualsVerifier;
-import nl.jqno.equalsverifier.Warning;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class PojoClassesTests {
-
- @Test
- public void test_camunda_module_pojo_classes() throws ClassNotFoundException {
- test("org.onap.so.monitoring.camunda.model");
- assertEqualMethod("org.onap.so.monitoring.camunda.model");
- }
-
- @Test
- public void test_so_monitoring_pojo_classes() throws ClassNotFoundException {
- test("org.onap.so.monitoring.model");
- assertEqualMethod("org.onap.so.monitoring.model");
- }
-
- public void assertEqualMethod(final String pojoPackage) throws ClassNotFoundException {
- final Set<BeanDefinition> classes = getBeanDefinition(pojoPackage);
- assertFalse(classes.isEmpty());
- for (final BeanDefinition bean : classes) {
- final Class<?> clazz = Class.forName(bean.getBeanClassName());
- if (!clazz.getName().endsWith("Builder")) {
- EqualsVerifier.forClass(clazz).suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS).verify();
- }
- }
- }
-
- private Set<BeanDefinition> getBeanDefinition(final String pojoPackage) {
- final ClassPathScanningCandidateComponentProvider provider =
- new ClassPathScanningCandidateComponentProvider(false);
- provider.addIncludeFilter(new RegexPatternTypeFilter(Pattern.compile(pojoPackage + ".*")));
- return provider.findCandidateComponents(pojoPackage);
- }
-
- private void test(final String pojoPackage) {
- final Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester())
- .with(new ToStringTester()).build();
- validator.validate(pojoPackage, new FilterPackageInfo());
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java
deleted file mode 100644
index 5484b7a7ca..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.configuration.database;
-
-import static org.junit.Assert.assertEquals;
-import org.junit.Test;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class DatabaseUrlProviderTest {
-
- private static final int MAX_RESULT = 1;
- private static final String URL = "http://localhost:8081/infraActiveRequests/";
- private final DatabaseUrlProvider objUnderTest = new DatabaseUrlProvider(URL);
-
- @Test
- public void test_maxResultNull() {
- final long from = System.currentTimeMillis();
- final long to = System.currentTimeMillis();
- final String actualUrl = objUnderTest.getSearchUrl(from, to, null);
- assertEquals(URL + "v1/getInfraActiveRequests?from=" + from + "&to=" + to, actualUrl);
- }
-
- @Test
- public void test_maxResultNotNull() {
- final long from = System.currentTimeMillis();
- final long to = System.currentTimeMillis();
- final String actualUrl = objUnderTest.getSearchUrl(from, to, MAX_RESULT);
- assertEquals(URL + "v1/getInfraActiveRequests?from=" + from + "&to=" + to + "&maxResult=" + MAX_RESULT,
- actualUrl);
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java
deleted file mode 100644
index 36a39d9cad..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.db.api;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import org.junit.Test;
-import org.onap.so.monitoring.camunda.model.SoActiveInfraRequests;
-import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider;
-import org.onap.so.monitoring.db.service.DatabaseServiceProvider;
-import org.onap.so.monitoring.db.service.DatabaseServiceProviderImpl;
-import org.onap.so.monitoring.model.SoInfraRequest;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import com.google.common.base.Optional;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class DatabaseServiceProviderTest {
-
- private final static DatabaseUrlProvider URL_PROVIDER =
- new DatabaseUrlProvider("http://localhost:8081/infraActiveRequests/");
-
- @Test
- public void test_GetSoInfraRequest_WithEmptyFilters_EmptyList() {
- final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
- final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
- final Optional<SoActiveInfraRequests[]> response = Optional.of(new SoActiveInfraRequests[] {});
-
- when(mockServiceProvider.post(eq(Collections.emptyMap()), eq(searchUrl), eq(SoActiveInfraRequests[].class)))
- .thenReturn(response);
-
- final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
-
- assertTrue(objUnderTest.getSoInfraRequest(Collections.emptyMap(), 0, 0, null).isEmpty());
- }
-
- @Test
- public void test_GetSoInfraRequest_OptionalAbsent_EmptyList() {
- final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
- final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
- final Optional<SoActiveInfraRequests[]> response = Optional.absent();
-
- when(mockServiceProvider.post(eq(Collections.emptyMap()), eq(searchUrl), eq(SoActiveInfraRequests[].class)))
- .thenReturn(response);
-
- final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
-
- assertTrue(objUnderTest.getSoInfraRequest(Collections.emptyMap(), 0, 0, null).isEmpty());
- }
-
- @Test
- public void test_GetSoInfraRequest_WithFilters_InfraActiveRequestsList() {
- final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
- final String requestID = UUID.randomUUID().toString();
- final Map<String, String[]> filters = new HashMap<>();
- filters.put("requestId", new String[] {"EQ", requestID});
-
- final SoActiveInfraRequests soActiveInfraRequests = new SoActiveInfraRequests();
- soActiveInfraRequests.setRequestId(requestID);
-
- final Optional<SoActiveInfraRequests[]> response =
- Optional.of(new SoActiveInfraRequests[] {soActiveInfraRequests});
-
- final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
-
- when(mockServiceProvider.post(eq(filters), eq(searchUrl), eq(SoActiveInfraRequests[].class)))
- .thenReturn(response);
-
- final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
-
- final List<SoInfraRequest> actualList = objUnderTest.getSoInfraRequest(filters, 0, 0, null);
- assertFalse(actualList.isEmpty());
- assertEquals(requestID, actualList.get(0).getRequestId());
-
- }
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java
deleted file mode 100644
index 61b8b898a9..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.service;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import java.util.List;
-import java.util.UUID;
-import org.junit.Test;
-import org.onap.so.monitoring.camunda.model.ActivityInstance;
-import org.onap.so.monitoring.camunda.model.ProcessDefinition;
-import org.onap.so.monitoring.camunda.model.ProcessInstance;
-import org.onap.so.monitoring.camunda.model.ProcessInstanceVariable;
-import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider;
-import org.onap.so.monitoring.model.ActivityInstanceDetail;
-import org.onap.so.monitoring.model.ProcessDefinitionDetail;
-import org.onap.so.monitoring.model.ProcessInstanceIdDetail;
-import org.onap.so.monitoring.model.ProcessInstanceVariableDetail;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import com.google.common.base.Optional;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-public class CamundaProcessDataServiceProviderTest {
- private static final String DURATION = "1";
- private static final String FLOW_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
- private static final String NAME = "Test";
- private static final String DEFAULT = "default";
- private static final String CAMUNDA_REST_API_URL = "http://localhost:9080/engine-rest/engine/";
-
- private static final String ID = UUID.randomUUID().toString();
- private static final String PROCESS_ID = UUID.randomUUID().toString();
- private static final String DEF_ID = UUID.randomUUID().toString();
- private static final String SUPER_PROCESS_ID = UUID.randomUUID().toString();
- private final HttpRestServiceProvider httpRestServiceProvider = mock(HttpRestServiceProvider.class);
- private final CamundaRestUrlProvider camundaRestUrlProvider =
- new CamundaRestUrlProvider(CAMUNDA_REST_API_URL, DEFAULT);
-
-
- @Test
- public void test_GetProcessInstanceDetail_EmptyResponse() {
- final Optional<ProcessInstance[]> response = Optional.<ProcessInstance[]>absent();
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
- when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
- assertFalse(actualResponse.isPresent());
- }
-
- @Test
- public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNull() {
- final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance());
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
- when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
- assertTrue(actualResponse.isPresent());
-
- final ProcessInstanceIdDetail actualProcessInstanceDetail = actualResponse.get();
- assertEquals(PROCESS_ID, actualProcessInstanceDetail.getProcessInstanceId());
- }
-
- @Test
- public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNotNull() {
- final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance(SUPER_PROCESS_ID));
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
- when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
- assertFalse(actualResponse.isPresent());
-
- }
-
- @Test
- public void test_GetProcessDefinition_EmptyResponse() {
- final Optional<ProcessDefinition> response = Optional.<ProcessDefinition>absent();
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + ID + "/xml";
- when(httpRestServiceProvider.get(url, ProcessDefinition.class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final Optional<ProcessDefinitionDetail> actualResponse = objUnderTest.getProcessDefinition(ID);
- assertFalse(actualResponse.isPresent());
- }
-
- @Test
- public void test_GetProcessDefinition_NonEmptyResponse() {
- final Optional<ProcessDefinition> response = getProcessDefinition();
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + PROCESS_ID + "/xml";
- when(httpRestServiceProvider.get(url, ProcessDefinition.class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final Optional<ProcessDefinitionDetail> actualResponse = objUnderTest.getProcessDefinition(PROCESS_ID);
- assertTrue(actualResponse.isPresent());
- assertEquals(PROCESS_ID, actualResponse.get().getProcessDefinitionId());
- assertEquals(FLOW_XML, actualResponse.get().getProcessDefinitionXml());
- }
-
- @Test
- public void test_GetActivityInstance_EmptyResponse() {
- final Optional<ActivityInstance[]> response = Optional.<ActivityInstance[]>absent();
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID
- + "&sortBy=startTime&sortOrder=asc";
- when(httpRestServiceProvider.get(url, ActivityInstance[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final List<ActivityInstanceDetail> actualResponse = objUnderTest.getActivityInstance(PROCESS_ID);
- assertTrue(actualResponse.isEmpty());
-
- }
-
- @Test
- public void test_GetActivityInstance_NonEmptyResponse() {
- final Optional<ActivityInstance[]> response = getActivityInstance();
- final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID
- + "&sortBy=startTime&sortOrder=asc";
- when(httpRestServiceProvider.get(url, ActivityInstance[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final List<ActivityInstanceDetail> actualResponse = objUnderTest.getActivityInstance(PROCESS_ID);
- assertFalse(actualResponse.isEmpty());
- final ActivityInstanceDetail actualActivityInstanceDetail = actualResponse.get(0);
- assertEquals(ID, actualActivityInstanceDetail.getActivityId());
- assertEquals(NAME, actualActivityInstanceDetail.getActivityName());
- assertEquals(NAME, actualActivityInstanceDetail.getActivityType());
-
- }
-
- @Test
- public void test_GetProcessInstanceVariable_EmptyResponse() {
- final Optional<ProcessInstanceVariable[]> response = Optional.<ProcessInstanceVariable[]>absent();
- final String url =
- CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID;
- when(httpRestServiceProvider.get(url, ProcessInstanceVariable[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final List<ProcessInstanceVariableDetail> actualResponse = objUnderTest.getProcessInstanceVariable(PROCESS_ID);
- assertTrue(actualResponse.isEmpty());
-
- }
-
- @Test
- public void test_GetProcessInstanceVariable_NonEmptyResponse() {
- final Optional<ProcessInstanceVariable[]> response = getProcessInstanceVariable();
- final String url =
- CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID;
- when(httpRestServiceProvider.get(url, ProcessInstanceVariable[].class)).thenReturn(response);
- final CamundaProcessDataServiceProvider objUnderTest =
- new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
-
- final List<ProcessInstanceVariableDetail> actualResponse = objUnderTest.getProcessInstanceVariable(PROCESS_ID);
- assertFalse(actualResponse.isEmpty());
- final ProcessInstanceVariableDetail variableDetail = actualResponse.get(0);
- assertEquals(NAME, variableDetail.getName());
- assertEquals(NAME, variableDetail.getType());
- assertEquals(NAME, variableDetail.getValue());
-
- }
-
- private Optional<ProcessInstanceVariable[]> getProcessInstanceVariable() {
- final ProcessInstanceVariable instanceVariable = new ProcessInstanceVariable();
- instanceVariable.setName(NAME);
- instanceVariable.setType(NAME);
- instanceVariable.setValue(NAME);
- return Optional.of(new ProcessInstanceVariable[] {instanceVariable});
- }
-
- private Optional<ActivityInstance[]> getActivityInstance() {
- final ActivityInstance activityInstance = new ActivityInstance();
- activityInstance.setActivityId(ID);
- activityInstance.setActivityName(NAME);
- activityInstance.setActivityType(NAME);
- activityInstance.setDurationInMillis(DURATION);
- return Optional.of(new ActivityInstance[] {activityInstance});
- }
-
- private Optional<ProcessDefinition> getProcessDefinition() {
- final ProcessDefinition processDefinition = new ProcessDefinition();
- processDefinition.setId(PROCESS_ID);
- processDefinition.setBpmn20Xml(FLOW_XML);
- return Optional.of(processDefinition);
- }
-
- private ProcessInstance[] getProcessInstance() {
- return getProcessInstance(null);
- }
-
- private ProcessInstance[] getProcessInstance(final String superProcessInstanceId) {
- final ProcessInstance instance = new ProcessInstance();
- instance.setId(PROCESS_ID);
- instance.setProcessDefinitionId(DEF_ID);
- instance.setProcessDefinitionName(NAME);
- instance.setSuperProcessInstanceId(superProcessInstanceId);
- return new ProcessInstance[] {instance};
- }
-
-
-}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java
deleted file mode 100644
index b4dd27129d..0000000000
--- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.utils;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import java.util.Arrays;
-import java.util.List;
-import org.junit.Test;
-
-
-/**
- * @author waqas.ikram@ericsson.com
- *
- */
-public class ObjectEqualsUtilsTest {
-
- private static final String VALUE = "Humpty Dumpty Sat On The Wall";
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_NullValues() {
- assertTrue(ObjectEqualsUtils.isEqual(null, null));
- }
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_FirstValueNullSecondNotNull() {
- assertFalse(ObjectEqualsUtils.isEqual(null, VALUE));
- }
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_FirstValueNotNullSecondNull() {
- assertFalse(ObjectEqualsUtils.isEqual(VALUE, null));
- }
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_NotNullValues() {
- assertTrue(ObjectEqualsUtils.isEqual(VALUE, VALUE));
- }
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_CollectionValues() {
- final List<Object> firstObject = Arrays.asList(VALUE);
- final List<Object> secondObject = Arrays.asList(VALUE);
- assertTrue(ObjectEqualsUtils.isEqual(firstObject, secondObject));
- }
-
- @Test
- public void test_ObjectEqualsUtils_isEqual_CollectionAndStringValues() {
- final List<Object> firstObject = Arrays.asList(VALUE);
- assertFalse(ObjectEqualsUtils.isEqual(firstObject, VALUE));
- }
-}
diff --git a/so-monitoring/so-monitoring-service/pom.xml b/so-monitoring/so-monitoring-service/pom.xml
deleted file mode 100644
index 4a0f6cbe1d..0000000000
--- a/so-monitoring/so-monitoring-service/pom.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-monitoring-service</artifactId>
- <name>${project.artifactId}</name>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring-handler</artifactId>
- <version>${project.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jersey</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <scope>compile</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${springboot.version}</version>
- <configuration>
- <mainClass>org.onap.so.monitoring.rest.api.SoMonitoringApplication</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <version>3.0.2</version>
- <executions>
- <execution>
- <id>copy-resources</id>
- <phase>validate</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>${project.basedir}/target/classes/static/</outputDirectory>
- <resources>
- <resource>
- <directory>${project.basedir}/../so-monitoring-ui/src/main/frontend/dist/ONAP-SO-Monitor/</directory>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <excludes>
- <exclude>**/*.p12</exclude>
- <exclude>**/*.jks</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>false</filtering>
- <includes>
- <include>**/*.p12</include>
- <include>**/*.jks</include>
- </includes>
- </resource>
- </resources>
- </build>
-
-</project>
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java
deleted file mode 100644
index 22a1583fc2..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.api;
-
-import javax.annotation.PostConstruct;
-import javax.ws.rs.ApplicationPath;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Configuration
-@ApplicationPath("/so/monitoring")
-public class JerseyConfiguration extends ResourceConfig {
-
- @PostConstruct
- public void setUp() {
- register(SoMonitoringController.class);
- }
-
-}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java
deleted file mode 100644
index aff4fecfdc..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.monitoring.rest.api;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@SpringBootApplication(scanBasePackages = {"org.onap"}, exclude = SecurityAutoConfiguration.class)
-public class SoMonitoringApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(SoMonitoringApplication.class, args);
-
- }
-
-}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java
deleted file mode 100644
index 5a5a4143fa..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.api;
-
-import com.google.common.base.Optional;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import org.onap.so.monitoring.db.service.DatabaseServiceProvider;
-import org.onap.so.monitoring.model.ActivityInstanceDetail;
-import org.onap.so.monitoring.model.ProcessDefinitionDetail;
-import org.onap.so.monitoring.model.ProcessInstanceDetail;
-import org.onap.so.monitoring.model.ProcessInstanceIdDetail;
-import org.onap.so.monitoring.model.ProcessInstanceVariableDetail;
-import org.onap.so.monitoring.model.SoInfraRequest;
-import org.onap.so.monitoring.rest.service.CamundaProcessDataServiceProvider;
-import org.onap.so.rest.exceptions.InvalidRestRequestException;
-import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Component
-@Path("/")
-public class SoMonitoringController {
-
- private static final String INVALID_PROCESS_INSTANCE_ERROR_MESSAGE = "Invalid process instance id: ";
-
- private static final Logger LOGGER = LoggerFactory.getLogger(SoMonitoringController.class);
-
- private final DatabaseServiceProvider databaseServiceProvider;
-
- private final CamundaProcessDataServiceProvider camundaProcessDataServiceProvider;
-
- @Autowired
- public SoMonitoringController(final DatabaseServiceProvider databaseServiceProvider,
- final CamundaProcessDataServiceProvider camundaProcessDataServiceProvider) {
- this.databaseServiceProvider = databaseServiceProvider;
- this.camundaProcessDataServiceProvider = camundaProcessDataServiceProvider;
- }
-
- @GET
- @Path("/process-instance-id/{requestId}")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response getProcessInstanceId(final @PathParam("requestId") String requestId) {
- if (requestId == null || requestId.isEmpty()) {
- return Response.status(Status.BAD_REQUEST).entity("Invalid Request id: " + requestId).build();
- }
- try {
- final Optional<ProcessInstanceIdDetail> processInstanceId =
- camundaProcessDataServiceProvider.getProcessInstanceIdDetail(requestId);
- if (processInstanceId.isPresent()) {
- return Response.status(Status.OK).entity(processInstanceId.get()).build();
- }
-
- LOGGER.error("Unable to find process instance id for : {} ", requestId);
- return Response.status(Status.NO_CONTENT).build();
-
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message = "Unable to find process instance id for : " + requestId;
- LOGGER.error(message);
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to process request for id: " + requestId;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
- @GET
- @Path("/process-instance/{processInstanceId}")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response getSingleProcessInstance(final @PathParam("processInstanceId") String processInstanceId) {
- if (processInstanceId == null || processInstanceId.isEmpty()) {
- return Response.status(Status.BAD_REQUEST)
- .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
- }
- try {
- final Optional<ProcessInstanceDetail> processInstanceDetail =
- camundaProcessDataServiceProvider.getSingleProcessInstanceDetail(processInstanceId);
- if (processInstanceDetail.isPresent()) {
- return Response.status(Status.OK).entity(processInstanceDetail.get()).build();
- }
-
- LOGGER.error("Unable to find process instance id for : {}", processInstanceId);
- return Response.status(Status.NO_CONTENT).build();
-
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message = "Unable to find process instance id for : " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to process request for id: " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
- @GET
- @Path("/process-definition/{processDefinitionId}")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response getProcessDefinitionXml(final @PathParam("processDefinitionId") String processDefinitionId) {
- if (processDefinitionId == null || processDefinitionId.isEmpty()) {
- return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + processDefinitionId)
- .build();
- }
- try {
- final Optional<ProcessDefinitionDetail> response =
- camundaProcessDataServiceProvider.getProcessDefinition(processDefinitionId);
- if (response.isPresent()) {
- final ProcessDefinitionDetail definitionDetail = response.get();
- return Response.status(Status.OK).entity(definitionDetail).build();
- }
- LOGGER.error("Unable to find process definition xml for processDefinitionId: {}", processDefinitionId);
- return Response.status(Status.NO_CONTENT).build();
-
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message =
- "Unable to find process definition xml for processDefinitionId: {}" + processDefinitionId;
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to get process definition xml for id: " + processDefinitionId;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
- @GET
- @Path("/activity-instance/{processInstanceId}")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response getActivityInstanceDetail(final @PathParam("processInstanceId") String processInstanceId) {
- if (processInstanceId == null || processInstanceId.isEmpty()) {
- return Response.status(Status.BAD_REQUEST)
- .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
- }
- try {
- final List<ActivityInstanceDetail> activityInstanceDetails =
- camundaProcessDataServiceProvider.getActivityInstance(processInstanceId);
- return Response.status(Status.OK).entity(activityInstanceDetails).build();
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message = "Unable to find activity instance for processInstanceId: " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to get activity instance detail for id: " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
- @GET
- @Path("/variable-instance/{processInstanceId}")
- @Produces(MediaType.APPLICATION_JSON)
- public Response getProcessInstanceVariables(final @PathParam("processInstanceId") String processInstanceId) {
- if (processInstanceId == null || processInstanceId.isEmpty()) {
- return Response.status(Status.BAD_REQUEST)
- .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
- }
- try {
- final List<ProcessInstanceVariableDetail> processInstanceVariable =
- camundaProcessDataServiceProvider.getProcessInstanceVariable(processInstanceId);
- return Response.status(Status.OK).entity(processInstanceVariable).build();
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message =
- "Unable to find process instance variables for processInstanceId: " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to get process instance variables for id: " + processInstanceId;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
- @POST
- @Path("/v1/search")
- @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
- public Response getInfraActiveRequests(final Map<String, String[]> filters,
- @QueryParam("from") final long startTime, @QueryParam("to") final long endTime,
- @QueryParam("maxResult") final Integer maxResult) {
-
- if (filters == null) {
- return Response.status(Status.BAD_REQUEST).entity("Invalid filters: " + filters).build();
- }
- try {
- final List<SoInfraRequest> requests =
- databaseServiceProvider.getSoInfraRequest(filters, startTime, endTime, maxResult);
- LOGGER.info("result size: {}", requests.size());
- return Response.status(Status.OK).entity(requests).build();
-
- } catch (final InvalidRestRequestException | HttpResouceNotFoundException extensions) {
- final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
- + ", to: " + endTime + ", maxResult: " + maxResult;
- LOGGER.error(message);
- return Response.status(Status.BAD_REQUEST).entity(message).build();
- } catch (final RestProcessingException restProcessingException) {
- final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
- + ", to: " + endTime + ", maxResult: " + maxResult;
- LOGGER.error(message);
- return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
- }
- }
-
-}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java
deleted file mode 100644
index cadd60b0d9..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.api;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-/**
- * @author waqas.ikram@ericsson.com
- */
-@Configuration
-public class WebApplicationConfig extends WebMvcConfigurerAdapter {
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/details/**").setViewName("forward:/");
- }
-}
diff --git a/so-monitoring/so-monitoring-service/src/main/resources/application.yaml b/so-monitoring/so-monitoring-service/src/main/resources/application.yaml
deleted file mode 100644
index c57d79c75b..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/resources/application.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-server:
- ssl:
- keyStore: classpath:org.onap.so.p12
- keyStorePassword: 6IxlmmPs:HqNhzVP#VFuSs,%
- trustStore: classpath:org.onap.so.trust.jks
- trustStorePassword: 72z0TFN&xfSR;;&NrIP^QB,^
- port: 9091
- tomcat:
- max-threads: 50
-camunda:
- rest:
- api:
- url: http://so-bpmn-infra.onap:8081/sobpmnengine/engine/
- engine: default
- auth: Basic YXBpaEJwbW46cGFzc3dvcmQxJA==
-mso:
- database:
- rest:
- api:
- url: http://so-request-db-adapter.onap:8083/infraActiveRequests/
- auth: Basic YnBlbDpwYXNzd29yZDEk
-
-spring:
- main:
- allow-bean-definition-overriding: true
- security:
- usercredentials:
- -
- username: demo
- password: '$2a$10$ndkDhATUid4a3g0JJVRv2esX4rtB.vzCn7iBhKyR1qZ/wDdvNzjTS'
- role: GUI-Client
diff --git a/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.p12 b/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.p12
deleted file mode 100644
index 8fa921a884..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.p12
+++ /dev/null
Binary files differ
diff --git a/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.trust.jks b/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.trust.jks
deleted file mode 100644
index 39c310e27e..0000000000
--- a/so-monitoring/so-monitoring-service/src/main/resources/org.onap.so.trust.jks
+++ /dev/null
Binary files differ
diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java
deleted file mode 100644
index aef8234228..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.api;
-
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.UUID;
-
-/**
- * @author andrei.barcovschi@ericsson.com
- *
- */
-public class Constants {
-
- public static final String PROCRESS_DEF_ID = "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb";
-
- public static final String EMPTY_ARRAY_RESPONSE = "[]";
-
- public static final String PROCESS_INSTACE_ID = "5956a99d-9736-11e8-8caf-022ac9304eeb";
-
- public static final String EMPTY_STRING = "";
-
- public static final String SOURCE_TEST_FOLDER = "src/test/resources/camundaResponses/";
-
- public static final Path PROCESS_DEF_RESPONSE_JSON_FILE = Paths.get(SOURCE_TEST_FOLDER + "processDefinition.json");
-
- public static final Path ACTIVITY_INSTANCE_RESPONSE_JSON_FILE =
- Paths.get(SOURCE_TEST_FOLDER + "activityInstance.json");
-
- public static final Path PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE =
- Paths.get(SOURCE_TEST_FOLDER + "processInstanceVariables.json");
-
- public static final Path PROCCESS_INSTANCE_RESPONSE_JSON_FILE =
- Paths.get(SOURCE_TEST_FOLDER + "processInstance.json");
-
- public static final Path SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE =
- Paths.get(SOURCE_TEST_FOLDER + "singleprocessInstance.json");
-
- public static final Path SEARCH_RESULT_RESPONSE_JSON_FILE =
- Paths.get("src/test/resources/databaseResponses/searchResult.json");
-
- public static final String ID = UUID.randomUUID().toString();
-
- public static final long END_TIME_IN_MS = 1546351200000l;
-
- public static final long START_TIME_IN_MS = 1546346700000l;
-
- private Constants() {}
-
-}
diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java
deleted file mode 100644
index e22f1a359f..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2018 Ericsson. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.monitoring.rest.api;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import static org.onap.so.configuration.rest.BasicHttpHeadersProvider.AUTHORIZATION_HEADER;
-import static org.onap.so.monitoring.rest.api.Constants.ACTIVITY_INSTANCE_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.EMPTY_ARRAY_RESPONSE;
-import static org.onap.so.monitoring.rest.api.Constants.EMPTY_STRING;
-import static org.onap.so.monitoring.rest.api.Constants.END_TIME_IN_MS;
-import static org.onap.so.monitoring.rest.api.Constants.ID;
-import static org.onap.so.monitoring.rest.api.Constants.PROCCESS_INSTANCE_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.PROCESS_DEF_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.PROCESS_INSTACE_ID;
-import static org.onap.so.monitoring.rest.api.Constants.PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.PROCRESS_DEF_ID;
-import static org.onap.so.monitoring.rest.api.Constants.SEARCH_RESULT_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE;
-import static org.onap.so.monitoring.rest.api.Constants.START_TIME_IN_MS;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
-import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
-import static org.springframework.test.web.client.response.MockRestResponseCreators.withUnauthorizedRequest;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider;
-import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider;
-import org.onap.so.monitoring.model.ActivityInstanceDetail;
-import org.onap.so.monitoring.model.ProcessDefinitionDetail;
-import org.onap.so.monitoring.model.ProcessInstanceDetail;
-import org.onap.so.monitoring.model.ProcessInstanceIdDetail;
-import org.onap.so.monitoring.model.ProcessInstanceVariableDetail;
-import org.onap.so.monitoring.model.SoInfraRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.web.client.MockRestServiceServer;
-import org.springframework.web.client.RestTemplate;
-
-
-/**
- * @author waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
- */
-@RunWith(SpringJUnit4ClassRunner.class)
-@ActiveProfiles("test")
-@SpringBootTest
-public class SoMonitoringControllerTest {
- private static final String CAMUNDA_BASIC_AUTH =
- "Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==";
-
- private static final String DATABASE_BASIC_AUTH = "Basic YnBlbDpwYXNzd29yZDEk";
-
- @Autowired
- @Qualifier(CONFIGURABLE_REST_TEMPLATE)
- private RestTemplate restTemplate;
-
- @Autowired
- private CamundaRestUrlProvider urlProvider;
-
- @Autowired
- private DatabaseUrlProvider databaseUrlProvider;
-
- private MockRestServiceServer mockRestServiceServer;
-
-
- @Autowired
- private SoMonitoringController objUnderTest;
-
- @Before
- public void setUp() throws Exception {
- mockRestServiceServer = MockRestServiceServer.bindTo(restTemplate).build();
- }
-
- @Test
- public void test_GetProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception {
- final String jsonString = getJsonResponse(PROCCESS_INSTANCE_RESPONSE_JSON_FILE);
- this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
- .andExpect(header(AUTHORIZATION_HEADER, CAMUNDA_BASIC_AUTH))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getProcessInstanceId(ID);
-
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- final ProcessInstanceIdDetail actualProcessInstance = (ProcessInstanceIdDetail) response.getEntity();
- assertEquals("dba707b6-8c02-11e8-a6ba-022a5dba5402", actualProcessInstance.getProcessInstanceId());
- }
-
- @Test
- public void test_GetProcessInstance_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
- final String jsonString = EMPTY_ARRAY_RESPONSE;
- this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getProcessInstanceId(ID);
- assertEquals(Status.NO_CONTENT.getStatusCode(), response.getStatus());
- assertNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessInstance_FailureResponseWithEmptyDataFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
- .andRespond(withBadRequest());
-
- final Response response = objUnderTest.getProcessInstanceId(ID);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- }
-
- @Test
- public void test_GetProcessInstance_UnauthorizedRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
- .andRespond(withUnauthorizedRequest());
-
- final Response response = objUnderTest.getProcessInstanceId(ID);
- assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetSinlgeProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception {
- final String jsonString = getJsonResponse(SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE);
- this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
-
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- final ProcessInstanceDetail actualProcessInstance = (ProcessInstanceDetail) response.getEntity();
- assertEquals(PROCESS_INSTACE_ID, actualProcessInstance.getProcessInstanceId());
- assertEquals("EricssonNetworkSliceV1:3:28f9e0fc-9b00-11e8-a57a-022ac90273ed",
- actualProcessInstance.getProcessDefinitionId());
- assertEquals("EricssonNetworkSliceV1", actualProcessInstance.getProcessDefinitionName());
- assertNull(actualProcessInstance.getSuperProcessInstanceId());
- }
-
- @Test
- public void test_GetSingleProcessInstance_WithBadRequestResponseFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withBadRequest());
-
- final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetSingleProcessInstance_WithUnauthorizedRequestResponseFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withUnauthorizedRequest());
-
- final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
- assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetSingleProcessInstance_NullAndEmptyProcessInstanceIdFromCamunda() throws Exception {
-
- Response response = objUnderTest.getSingleProcessInstance(null);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
-
- response = objUnderTest.getSingleProcessInstance("");
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
-
- @Test
- public void test_GetProcessInstance_EmptyRequestID() throws Exception {
-
- Response response = objUnderTest.getProcessInstanceId(EMPTY_STRING);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
-
- response = objUnderTest.getProcessInstanceId(null);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- }
-
-
- @Test
- public void test_GetProcessDefinitionXml_SuccessResponseWithDataFromCamunda() throws Exception {
- final String jsonString = getJsonResponse(PROCESS_DEF_RESPONSE_JSON_FILE);
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
-
- final ProcessDefinitionDetail actual = (ProcessDefinitionDetail) response.getEntity();
- assertEquals(PROCRESS_DEF_ID, actual.getProcessDefinitionId());
- }
-
- @Test
- public void test_GetProcessDefinitionXml_BadRequestResponseFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
- .andRespond(withBadRequest());
-
- final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessDefinitionXml_UnauthorizedRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
- .andRespond(withUnauthorizedRequest());
-
- final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
- assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessDefinitionXml_NullValues() throws Exception {
- Response response = objUnderTest.getProcessDefinitionXml(EMPTY_STRING);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
-
- response = objUnderTest.getProcessDefinitionXml(null);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetActivityInstanceDetail_SuccessResponseWithDataFromCamunda() throws Exception {
- final String jsonString = getJsonResponse(ACTIVITY_INSTANCE_RESPONSE_JSON_FILE);
- this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
- @SuppressWarnings("unchecked")
- final List<ActivityInstanceDetail> actual = (List<ActivityInstanceDetail>) response.getEntity();
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- assertEquals(12, actual.size());
- final ActivityInstanceDetail activityInstanceDetail = actual.get(0);
- assertEquals("createVCPE_startEvent", activityInstanceDetail.getActivityId());
- assertEquals("Start Flow", activityInstanceDetail.getActivityName());
- assertEquals("startEvent", activityInstanceDetail.getActivityType());
- assertEquals(PROCESS_INSTACE_ID, activityInstanceDetail.getProcessInstanceId());
- assertNull(activityInstanceDetail.getCalledProcessInstanceId());
- assertEquals("26", activityInstanceDetail.getDurationInMillis());
- assertEquals("2018-08-03T16:00:31.815+0000", activityInstanceDetail.getStartTime());
- assertEquals("2018-08-03T16:00:31.841+0000", activityInstanceDetail.getEndTime());
-
- final ActivityInstanceDetail callActivityInstanceDetail = actual.get(4);
- assertEquals("DecomposeService", callActivityInstanceDetail.getActivityId());
- assertEquals("Call Decompose Service", callActivityInstanceDetail.getActivityName());
- assertEquals("callActivity", callActivityInstanceDetail.getActivityType());
- assertEquals("59d99609-9736-11e8-8caf-022ac9304eeb", callActivityInstanceDetail.getCalledProcessInstanceId());
- }
-
- @Test
- public void test_GetActivityInstanceDetail_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetActivityInstanceDetail_UnauthorizedRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withUnauthorizedRequest());
-
- final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
- assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetActivityInstanceDetail_BadRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
- .andRespond(withBadRequest());
-
- final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetActivityInstanceDetail_NullValues() throws Exception {
- Response response = objUnderTest.getActivityInstanceDetail(EMPTY_STRING);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
-
- response = objUnderTest.getActivityInstanceDetail(null);
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessInstanceVariables_SuccessResponseWithDataFromCamunda() throws Exception {
- final String jsonString = getJsonResponse(PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE);
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
-
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- @SuppressWarnings("unchecked")
- final List<ProcessInstanceVariableDetail> actual = (List<ProcessInstanceVariableDetail>) response.getEntity();
- assertEquals(230, actual.size());
-
- final ProcessInstanceVariableDetail variableDetail = actual.get(0);
- assertEquals("serviceType", variableDetail.getName());
- assertEquals("String", variableDetail.getType());
- assertEquals("PNFSERVICE", variableDetail.getValue());
- }
-
- @Test
- public void test_GetProcessInstanceVariables_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
- .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON));
-
- final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
-
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessInstanceVariables_BadRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
- .andRespond(withBadRequest());
-
- final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
-
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessInstanceVariables_UnauthorizedRequestFromCamunda() throws Exception {
- this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
- .andRespond(withUnauthorizedRequest());
-
- final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
-
- assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
- }
-
- @Test
- public void test_GetProcessInstanceVariables_NullAndEmptyValues() throws Exception {
-
- Response response = objUnderTest.getProcessInstanceVariables(EMPTY_STRING);
-
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
-
- response = objUnderTest.getProcessInstanceVariables(null);
-
- assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
- assertNotNull(response.getEntity());
-
- }
-
- @Test
- public void test_GetInfraActiveRequests_SuccessResponseWithSoInfraRequestList() throws Exception {
- final String jsonString = getJsonResponse(SEARCH_RESULT_RESPONSE_JSON_FILE);
- this.mockRestServiceServer
- .expect(requestTo(databaseUrlProvider.getSearchUrl(START_TIME_IN_MS, END_TIME_IN_MS, null)))
- .andExpect(header(AUTHORIZATION_HEADER, DATABASE_BASIC_AUTH))
- .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
-
- final Response response =
- objUnderTest.getInfraActiveRequests(Collections.emptyMap(), START_TIME_IN_MS, END_TIME_IN_MS, null);
-
- assertEquals(Status.OK.getStatusCode(), response.getStatus());
- @SuppressWarnings("unchecked")
- final List<SoInfraRequest> actual = (List<SoInfraRequest>) response.getEntity();
- assertEquals(3, actual.size());
-
- final Map<String, SoInfraRequest> actualRequests = new HashMap<>();
- for (final SoInfraRequest soInfraRequest : actual) {
- actualRequests.put(soInfraRequest.getRequestId(), soInfraRequest);
- }
- final SoInfraRequest infraRequest = actualRequests.get("9383dc81-7a6c-4673-8082-650d50a82a1a");
- assertNull(infraRequest.getEndTime());
- assertEquals("IN_PROGRESS", infraRequest.getRequestStatus());
- }
-
- private String getJsonResponse(final Path path) throws IOException {
- return new String(Files.readAllBytes(path));
- }
-
-}
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml b/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml
deleted file mode 100644
index 8d930fe17f..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-server:
- port: 8080
- tomcat:
- max-threads: 50
-ssl-enable: false
-spring:
- datasource:
- jdbc-url: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;
- driver-class-name: org.h2.Driver
-camunda:
- rest:
- api:
- url: http://localhost:8080/engine-rest/engine/
- engine: default
- auth: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
-
-mso:
- database:
- rest:
- api:
- url: http://localhost:8083/infraActiveRequests/
- auth: Basic YnBlbDpwYXNzd29yZDEk
-
- \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json
deleted file mode 100644
index a4f9e5b8d4..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json
+++ /dev/null
@@ -1,254 +0,0 @@
-[
- {
- "id": "createVCPE_startEvent:595dae93-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "createVCPE_startEvent",
- "activityName": "Start Flow",
- "activityType": "startEvent",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:31.815+0000",
- "endTime": "2018-08-03T16:00:31.841+0000",
- "durationInMillis": 26,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "5961f4bb-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "preProcessRequest_ScriptTask",
- "activityName": "PreProcess Incoming Request",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:31.842+0000",
- "endTime": "2018-08-03T16:00:32.532+0000",
- "durationInMillis": 690,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "59cb3e17-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "sendSyncAckResponse_ScriptTask",
- "activityName": "Send Sync Ack Response",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:32.532+0000",
- "endTime": "2018-08-03T16:00:32.588+0000",
- "durationInMillis": 56,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "ScriptTask_0cdtchu:59d465e4-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "ScriptTask_0cdtchu",
- "activityName": "Prepare\nDecompose\nService\n",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:32.592+0000",
- "endTime": "2018-08-03T16:00:32.609+0000",
- "durationInMillis": 17,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "DecomposeService:59d6fdf8-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "DecomposeService",
- "activityName": "Call Decompose Service",
- "activityType": "callActivity",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "59d6fdf7-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": "59d99609-9736-11e8-8caf-022ac9304eeb",
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:32.609+0000",
- "endTime": "2018-08-03T16:00:34.418+0000",
- "durationInMillis": 1809,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "ScriptTask_0lpv2da:5aeb53a2-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "ScriptTask_0lpv2da",
- "activityName": "PostProcess\nDecompose\nService\n",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:34.420+0000",
- "endTime": "2018-08-03T16:00:34.437+0000",
- "durationInMillis": 17,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "5aee12d2-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "prepareCreateService_scriptTask",
- "activityName": "Prepare\nCreate\nService\n",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:34.438+0000",
- "endTime": "2018-08-03T16:00:34.454+0000",
- "durationInMillis": 16,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "5af083d7-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "doCreateServiceInstance_CallActivity",
- "activityName": "Call Create \nServiceInstance\n",
- "activityType": "callActivity",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5af083d6-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": "5af12018-9736-11e8-8caf-022ac9304eeb",
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:34.454+0000",
- "endTime": "2018-08-03T16:00:40.424+0000",
- "durationInMillis": 5970,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "ScriptTask_1qd3uwb:5e7f9de7-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "ScriptTask_1qd3uwb",
- "activityName": "Post Process\nCreate\nService\n",
- "activityType": "scriptTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:40.425+0000",
- "endTime": "2018-08-03T16:00:40.443+0000",
- "durationInMillis": 18,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "updateInfraRequest:5e825d0a-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "updateInfraRequest",
- "activityName": "Update DB status to SUCCESS",
- "activityType": "serviceTask",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:40.443+0000",
- "endTime": "2018-08-03T16:00:40.503+0000",
- "durationInMillis": 60,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "5e8b84cc-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "IntermediateCatchEvent_1x88t9v",
- "activityName": "Await AAI Distribution\n\n",
- "activityType": "intermediateTimer",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5e8b84cb-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": null,
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:00:40.505+0000",
- "endTime": "2018-08-03T16:01:14.309+0000",
- "durationInMillis": 33804,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- },
- {
- "id": "Task_14l19kv:72b2d216-9736-11e8-8caf-022ac9304eeb",
- "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityId": "Task_14l19kv",
- "activityName": "Create And Activate Pnf Resource",
- "activityType": "callActivity",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "72b2d215-9736-11e8-8caf-022ac9304eeb",
- "taskId": null,
- "calledProcessInstanceId": "72b4cde7-9736-11e8-8caf-022ac9304eeb",
- "calledCaseInstanceId": null,
- "assignee": null,
- "startTime": "2018-08-03T16:01:14.315+0000",
- "endTime": null,
- "durationInMillis": null,
- "canceled": false,
- "completeScope": false,
- "tenantId": null
- }
-] \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json
deleted file mode 100644
index c4d9c7dcfa..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "id": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "bpmn20Xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn2:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:bpmn2=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" id=\"_MagIIMOUEeW8asg-vCEgWQ\" targetNamespace=\"http://camunda.org/schema/1.0/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"1.6.0\" xsi:schemaLocation=\"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\"></bpmn2:definitions>"
-} \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json
deleted file mode 100644
index d9e75e9b11..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json
+++ /dev/null
@@ -1,59 +0,0 @@
-[
- {
- "id": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
- "businessKey": "0a8b32d2-7281-423b-81a1-a44ebf8e489e",
- "processDefinitionId": "b76aaeb6-8993-11e8-9f7c-022a5d7b2d2d",
- "processDefinitionKey": "CreateGenericALaCarteServiceInstance",
- "processDefinitionName": "CreateGenericALaCarteServiceInstance",
- "processDefinitionVersion": 5,
- "startTime": "2018-07-20T09:54:13.779+0000",
- "endTime": "2018-07-20T09:54:15.344+0000",
- "durationInMillis": 1565,
- "startUserId": null,
- "startActivityId": "createSI_startEvent",
- "deleteReason": null,
- "superProcessInstanceId": null,
- "superCaseInstanceId": null,
- "caseInstanceId": null,
- "tenantId": null,
- "state": "COMPLETED"
- },
- {
- "id": "dbbcd94a-8c02-11e8-a6ba-022a5dba5402",
- "businessKey": null,
- "processDefinitionId": "DecomposeService:1:78e994ec-7fa7-11e8-816b-022a5d533d2a",
- "processDefinitionKey": "DecomposeService",
- "processDefinitionName": "DecomposeService",
- "processDefinitionVersion": 1,
- "startTime": "2018-07-20T09:54:13.921+0000",
- "endTime": "2018-07-20T09:54:14.124+0000",
- "durationInMillis": 203,
- "startUserId": null,
- "startActivityId": "createSI_startEvent",
- "deleteReason": null,
- "superProcessInstanceId": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
- "superCaseInstanceId": null,
- "caseInstanceId": null,
- "tenantId": null,
- "state": "COMPLETED"
- },
- {
- "id": "dbe0404f-8c02-11e8-a6ba-022a5dba5402",
- "businessKey": null,
- "processDefinitionId": "DoCreateServiceInstance:5:b7750f0d-8993-11e8-9f7c-022a5d7b2d2d",
- "processDefinitionKey": "DoCreateServiceInstance",
- "processDefinitionName": "DoCreateServiceInstance",
- "processDefinitionVersion": 5,
- "startTime": "2018-07-20T09:54:14.155+0000",
- "endTime": "2018-07-20T09:54:15.169+0000",
- "durationInMillis": 1014,
- "startUserId": null,
- "startActivityId": "createSI_startEvent",
- "deleteReason": null,
- "superProcessInstanceId": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
- "superCaseInstanceId": null,
- "caseInstanceId": null,
- "tenantId": null,
- "state": "COMPLETED"
- }
-] \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json
deleted file mode 100644
index 7762da7c2d..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json
+++ /dev/null
@@ -1,5062 +0,0 @@
-[
- {
- "type": "String",
- "value": "PNFSERVICE",
- "valueInfo": {
-
- },
- "id": "59571ece-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceType",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Boolean",
- "value": false,
- "valueInfo": {
-
- },
- "id": "595745df-9736-11e8-8caf-022ac9304eeb",
- "name": "isBaseVfModule",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745e0-9736-11e8-8caf-022ac9304eeb",
- "name": "vfModuleId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745e1-9736-11e8-8caf-022ac9304eeb",
- "name": "vfModuleType",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Null",
- "value": null,
- "valueInfo": {
-
- },
- "id": "595745e2-9736-11e8-8caf-022ac9304eeb",
- "name": "recipeParams",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "createInstance",
- "valueInfo": {
-
- },
- "id": "595745e3-9736-11e8-8caf-022ac9304eeb",
- "name": "requestAction",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "8383cec3-a39d-4037-aa23-e82891f178a7",
- "valueInfo": {
-
- },
- "id": "595745e4-9736-11e8-8caf-022ac9304eeb",
- "name": "mso-business-key",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
- "valueInfo": {
-
- },
- "id": "595745e5-9736-11e8-8caf-022ac9304eeb",
- "name": "mso-request-id",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745e6-9736-11e8-8caf-022ac9304eeb",
- "name": "volumeGroupId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "744fee42-8e20-4152-ad75-17fb1ebfc5b2",
- "valueInfo": {
-
- },
- "id": "595745e7-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceInstanceId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745e8-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfType",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
- "valueInfo": {
-
- },
- "id": "595745e9-9736-11e8-8caf-022ac9304eeb",
- "name": "requestId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "so",
- "valueInfo": {
-
- },
- "id": "595745ea-9736-11e8-8caf-022ac9304eeb",
- "name": "host",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"requestDetails\":{\"modelInfo\":{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelType\":\"service\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"},\"requestInfo\":{\"productFamilyId\":\"c8d92bf2-2c2e-4802-94e0-3f9e0825cc08\",\"source\":\"UUI\",\"instanceName\":\"AFRPOSTMAN51\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"subscriberInfo\":{\"globalSubscriberId\":\"Demonstration\"},\"cloudConfiguration\":{\"tenantId\":\"3e001881bcb342418ab5f2788a73255d\",\"lcpCloudRegionId\":\"regionOne_aaa_bbb\"},\"requestParameters\":{\"alaCarte\":false,\"subscriptionServiceType\":\"vCPE\",\"userParams\":[{\"name\":\"Homing_Solution\",\"value\":\"dummy\"}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-Demonstration\"},\"owningEntity\":{\"owningEntityId\":\"c77274d4-4881-493a-ad46-368ea0996eb3\",\"owningEntityName\":\"OE-Demonstration\"}},\"pnfCorrelationId\":\"afr\"}",
- "valueInfo": {
-
- },
- "id": "595745eb-9736-11e8-8caf-022ac9304eeb",
- "name": "bpmnRequest",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "afr",
- "valueInfo": {
-
- },
- "id": "595745ec-9736-11e8-8caf-022ac9304eeb",
- "name": "pnfCorrelationId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745ed-9736-11e8-8caf-022ac9304eeb",
- "name": "networkId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745ee-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745ef-9736-11e8-8caf-022ac9304eeb",
- "name": "configurationId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595745f0-9736-11e8-8caf-022ac9304eeb",
- "name": "networkType",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Integer",
- "value": 180,
- "valueInfo": {
-
- },
- "id": "595745f1-9736-11e8-8caf-022ac9304eeb",
- "name": "recipeTimeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595745f2-9736-11e8-8caf-022ac9304eeb",
- "name": "isAsyncProcess",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/mso/vnfAdapterNotify",
- "valueInfo": {
-
- },
- "id": "595ee714-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_vnfadapter_create_callback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee715-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateResourcesV3",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee716-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoUpdateNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/networks/rest/v1/networks",
- "valueInfo": {
-
- },
- "id": "595ee717-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_network_rest_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee718-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteViprAtmService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner",
- "valueInfo": {
-
- },
- "id": "595ee719-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_cloud_region_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee71a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DisconnectLayer3Service",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee71b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_updateCinderVolumeV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://com/att/svc/mis/firewall-lite-gui",
- "valueInfo": {
-
- },
- "id": "595ee71c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sdnc_firewall_yang_model",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "message-router:3904",
- "valueInfo": {
-
- },
- "id": "595ee71d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_poolMembers",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee71e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateE2EServiceInstanceV3",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee71f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_Layer3ServiceActivateV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee720-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateNetworkInstanceInfra",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee721-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee722-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee723-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoScaleE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595ee724-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_OofAdapter",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "1533303618885",
- "valueInfo": {
-
- },
- "id": "595ee725-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_properties_timestamp",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74",
- "valueInfo": {
-
- },
- "id": "595ee726-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_po_auth",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e37-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_vnfAdapterDeleteV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e38-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCompareModelVersions",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT30M",
- "valueInfo": {
-
- },
- "id": "595f0e39-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_oof_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "595f0e3a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_default_cloud_owner_id",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e3b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DelServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e3c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteVFCNSResource",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e3d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_commonCompletion",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "VIlbtVl6YLhNUrtU",
- "valueInfo": {
-
- },
- "id": "595f0e3e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_key",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/tenants/TenantAdapter",
- "valueInfo": {
-
- },
- "id": "595f0e3f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_tenant_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/route-table-references/route-table-reference",
- "valueInfo": {
-
- },
- "id": "595f0e40-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_route_table_reference_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e41-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e42-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_deleteVCEV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/ecomp/mso/catalog",
- "valueInfo": {
-
- },
- "id": "595f0e43-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_catalog_db_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e44-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_ChangeFeatureActivateV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e45-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CustomE2EPutService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e46-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_l3ToHigherLayerAddBonding",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e47-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DHVActivateService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e48-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_deleteGenericVNFV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e49-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_RollbackServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "message-router.onap",
- "valueInfo": {
-
- },
- "id": "595f0e4a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_dmaap_host",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e4b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateViprAtmService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e4c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_l3ToHigherLayerDeleteBonding",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f0e4d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CustomE2EGetService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f355e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_ChangeLayer3ServiceActivateV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "APPC-LCM-READ",
- "valueInfo": {
-
- },
- "id": "595f355f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_topic_write",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://org.openecomp.mso",
- "valueInfo": {
-
- },
- "id": "595f3560-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_namespace",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f3561-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateCustomerV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "SDNC-LCM-READ",
- "valueInfo": {
-
- },
- "id": "595f3562-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_topic_sdnc_write",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f3563-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateCustomE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "360000",
- "valueInfo": {
-
- },
- "id": "595f3564-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_response_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/dbadapters/RequestsDbAdapter",
- "valueInfo": {
-
- },
- "id": "595f3565-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_openecomp_db_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/mso/vnfAdapterNotify",
- "valueInfo": {
-
- },
- "id": "595f3566-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_vnfadapter_delete_callback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "20",
- "valueInfo": {
-
- },
- "id": "595f3567-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sdnc_timeout_firewall_minutes",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "1000",
- "valueInfo": {
-
- },
- "id": "595f3568-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_callbackRetrySleepTime",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "30",
- "valueInfo": {
-
- },
- "id": "595f3569-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_callbackRetryAttempts",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f356a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CompleteMsoProcess",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/mso/SDNCAdapterCallbackService",
- "valueInfo": {
-
- },
- "id": "595f356b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_sdncadapter_callback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://sniro-emulator:80/sniro/api/v2/placement",
- "valueInfo": {
-
- },
- "id": "595f356c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sniro_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "2630606608347B7124C244AB0FE34F6F",
- "valueInfo": {
-
- },
- "id": "595f356d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_aai_auth",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f356e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_createCinderVolumeV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f356f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_GenericPutService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f3570-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateVFCNSResource",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/adapters/rest/v1/sdnc",
- "valueInfo": {
-
- },
- "id": "595f3571-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_sdnc_rest_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f3572-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_RemoveLayer3Service",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f3573-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_GenericDeleteService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "ueb",
- "valueInfo": {
-
- },
- "id": "595f3574-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_service",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/networks/NetworkAdapter",
- "valueInfo": {
-
- },
- "id": "595f3575-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_network_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "test:testpwd",
- "valueInfo": {
-
- },
- "id": "595f3576-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_oof_auth",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c87-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_QueryTenantInfo",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "false",
- "valueInfo": {
-
- },
- "id": "595f5c88-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_use_qualified_host",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c89-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_deleteCinderVolumeV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/search/nodes-query",
- "valueInfo": {
-
- },
- "id": "595f5c8a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_nodes_query_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://org.openecomp.aai.inventory/",
- "valueInfo": {
-
- },
- "id": "595f5c8b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_global_default_aai_namespace",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "SDNC-LCM-WRITE",
- "valueInfo": {
-
- },
- "id": "595f5c8c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_topic_sdnc_read",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c8d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://sniro-emulator:80",
- "valueInfo": {
-
- },
- "id": "595f5c8e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_service_agnostic_sniro_host",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c8f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_vnfAdapterQueryV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/vpn-bindings/vpn-binding",
- "valueInfo": {
-
- },
- "id": "595f5c90-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_vpn_binding_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c91-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateVfModuleVolumeV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c92-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c93-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateVfModuleVolume",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c94-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateNetworkV2",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c95-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DecomposeService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c96-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteNetworkInstanceRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c97-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteVfModuleVolume",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c98-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DHVCreateService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "WAN Bonding",
- "valueInfo": {
-
- },
- "id": "595f5c99-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_name",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/search/generic-query",
- "valueInfo": {
-
- },
- "id": "595f5c9a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_generic_query_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c9b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoUpdateE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "21014aa2-526b-11e6-beb8-9e71128cae77",
- "valueInfo": {
-
- },
- "id": "595f5c9c-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_infra_customer_id",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c9d-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteSDNCNetworkResource",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c9e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_sdncAdapter",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5c9f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_asyncQueryAAICustomer",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/sniro/api/v2/placement",
- "valueInfo": {
-
- },
- "id": "595f5ca0-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_service_agnostic_sniro_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5ca1-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_sendAOTSTicket",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f5ca2-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteServiceInstanceInfra",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83b3-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteTenantV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "07a7159d3bf51a0e53be7a8f89699be7",
- "valueInfo": {
-
- },
- "id": "595f83b4-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_msoKey",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83b5-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_GenericGetService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83b6-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteVfModuleVolumeInfraV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "360000",
- "valueInfo": {
-
- },
- "id": "595f83b7-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_topic_read_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83b8-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoScaleVFCServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83b9-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateVfModuleVolumeRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/generic-vnfs/generic-vnf",
- "valueInfo": {
-
- },
- "id": "595f83ba-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_generic_vnf_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT5S",
- "valueInfo": {
-
- },
- "id": "595f83bb-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_sdnc_replication_delay",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/vnfs/VnfAdapterAsync",
- "valueInfo": {
-
- },
- "id": "595f83bc-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_vnf_async_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83bd-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_rollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT30M",
- "valueInfo": {
-
- },
- "id": "595f83be-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sniro_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PORT-MIRROR,PPROBE",
- "valueInfo": {
-
- },
- "id": "595f83bf-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_sdnc_si_svc_types",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "2015-05-15",
- "valueInfo": {
-
- },
- "id": "595f83c0-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sdnc_firewall_yang_model_version",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83c1-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteNetworkInstanceInfra",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83c2-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83c3-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_vnfAdapterCreateV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "11",
- "valueInfo": {
-
- },
- "id": "595f83c4-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_global_default_aai_version",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://oof-has-api:8091/api/oof/v1/placement",
- "valueInfo": {
-
- },
- "id": "595f83c5-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_oof_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83c6-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_VPECreateVfModule",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/DFW/tenants/tenant",
- "valueInfo": {
-
- },
- "id": "595f83c7-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_tenant_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83c8-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateVfModuleVolumeInfraV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT5M",
- "valueInfo": {
-
- },
- "id": "595f83c9-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_po_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83ca-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateServiceInstanceInfra",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83cb-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "52dbec20-47aa-42e4-936c-331d8e350d44",
- "valueInfo": {
-
- },
- "id": "595f83cc-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_versionid",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "https://aai.onap:8443",
- "valueInfo": {
-
- },
- "id": "595f83cd-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_aai_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595f83ce-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateTenantV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/workflows/messages/message",
- "valueInfo": {
-
- },
- "id": "595faadf-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_workflow_message_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT30S",
- "valueInfo": {
-
- },
- "id": "595faae0-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_aai_distribution_delay",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "2.0",
- "valueInfo": {
-
- },
- "id": "595faae1-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_version",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faae2-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_ScaleCustomE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/business/customers/customer",
- "valueInfo": {
-
- },
- "id": "595faae3-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_customer_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/vces/vce",
- "valueInfo": {
-
- },
- "id": "595faae4-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_vce_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://oof-has-api:8091",
- "valueInfo": {
-
- },
- "id": "595faae5-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_service_agnostic_oof_host",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/adapters/SDNCAdapter",
- "valueInfo": {
-
- },
- "id": "595faae6-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_sdnc_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "test:testpwd",
- "valueInfo": {
-
- },
- "id": "595faae7-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sniro_auth",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "APPC-LCM-WRITE",
- "valueInfo": {
-
- },
- "id": "595faae8-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_topic_read",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faae9-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoUpdateNetworkInstanceRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaea-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteNetworkV2",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaeb-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCompareModelofE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "3904",
- "valueInfo": {
-
- },
- "id": "595faaec-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_dmaap_port",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaed-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateNetworkInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/api/oof/v1/placement",
- "valueInfo": {
-
- },
- "id": "595faaee-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_service_agnostic_oof_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaef-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_SNIROAdapter",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaf0-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteResourcesV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaf1-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DeleteCustomE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT5M",
- "valueInfo": {
-
- },
- "id": "595faaf2-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sdnc_timeout",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "mso-docker",
- "valueInfo": {
-
- },
- "id": "595faaf3-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_sitename",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/CompleteMsoProcess",
- "valueInfo": {
-
- },
- "id": "595faaf4-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_completemsoprocess_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaf5-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateNetworkInstanceRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/network-policies/network-policy",
- "valueInfo": {
-
- },
- "id": "595faaf6-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_network_policy_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaf7-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateCustomE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74",
- "valueInfo": {
-
- },
- "id": "595faaf8-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_db_auth",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faaf9-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_Layer3TestAndTurnUpV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faafa-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_QueryAAICustomer",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faafb-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateNetworkV2",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faafc-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_getLayer3ServiceDetailsV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595faafd-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_UpdateVfModuleVolumeInfraV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd20e-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateNetworkInstanceInfra",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "/aai/v11/network/l3-networks/l3-network",
- "valueInfo": {
-
- },
- "id": "595fd20f-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_default_aai_v11_l3_network_uri",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd210-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateSDNCNetworkResource",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/vnfs/rest/v1/vnfs",
- "valueInfo": {
-
- },
- "id": "595fd211-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_vnf_rest_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "64AG2hF4pYeG2pq7CT6XwUOT",
- "valueInfo": {
-
- },
- "id": "595fd212-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_appc_client_secret",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd213-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CompareModelofE2EServiceInstance",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd214-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteVfModuleVolumeV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd215-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoDeleteVfModuleVolumeRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/mso/WorkflowMessage",
- "valueInfo": {
-
- },
- "id": "595fd216-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_message_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd217-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_CreateVfModuleVolume",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "50359538-066f-4a8d-807f-f2bc8eaa79dc",
- "valueInfo": {
-
- },
- "id": "595fd218-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_invariantid",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd219-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_vnfAdapterRollbackV1",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "http://so:8080/dbadapters/MsoRequestsDbAdapter",
- "valueInfo": {
-
- },
- "id": "595fd21a-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_mso_adapters_db_endpoint",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "595fd21b-9736-11e8-8caf-022ac9304eeb",
- "name": "URN_log_debug_DoCreateServiceInstanceRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "false",
- "valueInfo": {
-
- },
- "id": "595fd21c-9736-11e8-8caf-022ac9304eeb",
- "name": "isDebugLogEnabled",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "CVRCS_",
- "valueInfo": {
-
- },
- "id": "59bb113c-9736-11e8-8caf-022ac9304eeb",
- "name": "prefix",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"requestDetails\":{\"modelInfo\":{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelType\":\"service\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"},\"requestInfo\":{\"productFamilyId\":\"c8d92bf2-2c2e-4802-94e0-3f9e0825cc08\",\"source\":\"UUI\",\"instanceName\":\"AFRPOSTMAN51\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"subscriberInfo\":{\"globalSubscriberId\":\"Demonstration\"},\"cloudConfiguration\":{\"tenantId\":\"3e001881bcb342418ab5f2788a73255d\",\"lcpCloudRegionId\":\"regionOne_aaa_bbb\"},\"requestParameters\":{\"alaCarte\":false,\"subscriptionServiceType\":\"vCPE\",\"userParams\":[{\"name\":\"Homing_Solution\",\"value\":\"dummy\"}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-Demonstration\"},\"owningEntity\":{\"owningEntityId\":\"c77274d4-4881-493a-ad46-368ea0996eb3\",\"owningEntityName\":\"OE-Demonstration\"}},\"pnfCorrelationId\":\"afr\"}",
- "valueInfo": {
-
- },
- "id": "59bbfb9e-9736-11e8-8caf-022ac9304eeb",
- "name": "createVcpeServiceRequest",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "Demonstration",
- "valueInfo": {
-
- },
- "id": "59bbfba0-9736-11e8-8caf-022ac9304eeb",
- "name": "globalSubscriberId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "AFRPOSTMAN51",
- "valueInfo": {
-
- },
- "id": "59bbfba2-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceInstanceName",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
- "valueInfo": {
-
- },
- "id": "59bbfba4-9736-11e8-8caf-022ac9304eeb",
- "name": "msoRequestId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Integer",
- "value": 0,
- "valueInfo": {
-
- },
- "id": "59bcbef6-9736-11e8-8caf-022ac9304eeb",
- "name": "CVRCS_VnfsCreatedCount",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "c8d92bf2-2c2e-4802-94e0-3f9e0825cc08",
- "valueInfo": {
-
- },
- "id": "59bcbef8-9736-11e8-8caf-022ac9304eeb",
- "name": "productFamilyId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "59bcbefa-9736-11e8-8caf-022ac9304eeb",
- "name": "brgWanMacAddress",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "59bcbefc-9736-11e8-8caf-022ac9304eeb",
- "name": "customerLocation",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "dummy",
- "valueInfo": {
-
- },
- "id": "59bcbefe-9736-11e8-8caf-022ac9304eeb",
- "name": "homingService",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "regionOne",
- "valueInfo": {
-
- },
- "id": "59bcbf00-9736-11e8-8caf-022ac9304eeb",
- "name": "cloudOwner",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "aaa",
- "valueInfo": {
-
- },
- "id": "59bcbf02-9736-11e8-8caf-022ac9304eeb",
- "name": "cloudRegionId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "59bcbf04-9736-11e8-8caf-022ac9304eeb",
- "name": "homingModelIds",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "1707",
- "valueInfo": {
-
- },
- "id": "59bcbf06-9736-11e8-8caf-022ac9304eeb",
- "name": "sdncVersion",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "PT30S",
- "valueInfo": {
-
- },
- "id": "59bdf788-9736-11e8-8caf-022ac9304eeb",
- "name": "aaiDistDelay",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "Basic QlBFTENsaWVudDpwYXNzd29yZDEk",
- "valueInfo": {
-
- },
- "id": "59c34ebf-9736-11e8-8caf-022ac9304eeb",
- "name": "BasicAuthHeaderValueDB",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "UUI",
- "valueInfo": {
-
- },
- "id": "59c375d1-9736-11e8-8caf-022ac9304eeb",
- "name": "source",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "Demonstration",
- "valueInfo": {
-
- },
- "id": "59c39ce4-9736-11e8-8caf-022ac9304eeb",
- "name": "globalCustomerId",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "vCPE",
- "valueInfo": {
-
- },
- "id": "59c39ce6-9736-11e8-8caf-022ac9304eeb",
- "name": "subscriptionServiceType",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "false",
- "valueInfo": {
-
- },
- "id": "59c3c3f8-9736-11e8-8caf-022ac9304eeb",
- "name": "disableRollback",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"globalSubscriberId\":\"Demonstration\"}",
- "valueInfo": {
-
- },
- "id": "59c3eb0b-9736-11e8-8caf-022ac9304eeb",
- "name": "subscriberInfo",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Object",
- "value": {
- "Homing_Solution": "dummy"
- },
- "valueInfo": {
- "objectTypeName": "java.util.LinkedHashMap",
- "serializationDataFormat": "application/x-java-serialized-object"
- },
- "id": "59ca7ac1-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceInputParams",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "<request-info xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">\n <request-id>55b3f0ea-70c5-4965-9e00-df77ed1552a3</request-id>\n <action>CREATE</action>\n <source>UUI</source>\n </request-info>",
- "valueInfo": {
-
- },
- "id": "59cb3e15-9736-11e8-8caf-022ac9304eeb",
- "name": "CVRCS_requestInfo",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "202",
- "valueInfo": {
-
- },
- "id": "59d1f4d8-9736-11e8-8caf-022ac9304eeb",
- "name": "AFRFLOWResponseCode",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"requestReferences\":{\"instanceId\":\"744fee42-8e20-4152-ad75-17fb1ebfc5b2\",\"requestId\":\"55b3f0ea-70c5-4965-9e00-df77ed1552a3\"}}",
- "valueInfo": {
-
- },
- "id": "59d1f4da-9736-11e8-8caf-022ac9304eeb",
- "name": "AFRFLOWResponse",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "Success",
- "valueInfo": {
-
- },
- "id": "59d1f4dc-9736-11e8-8caf-022ac9304eeb",
- "name": "AFRFLOWStatus",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"requestReferences\":{\"instanceId\":\"744fee42-8e20-4152-ad75-17fb1ebfc5b2\",\"requestId\":\"55b3f0ea-70c5-4965-9e00-df77ed1552a3\"}}",
- "valueInfo": {
-
- },
- "id": "59d1f4de-9736-11e8-8caf-022ac9304eeb",
- "name": "WorkflowResponse",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "true",
- "valueInfo": {
-
- },
- "id": "59d3c9a0-9736-11e8-8caf-022ac9304eeb",
- "name": "AFRFLOWWorkflowResponseSent",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelType\":\"service\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"}",
- "valueInfo": {
-
- },
- "id": "59d6d6e5-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceModelInfo",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Object",
- "value": null,
- "valueInfo": null,
- "id": "5aea904b-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceDecomposition",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": "Cannot deserialize object in variable 'serviceDecomposition': ENGINE-09017 Cannot load class 'org.openecomp.mso.bpmn.core.domain.ServiceDecomposition': org.openecomp.mso.bpmn.core.domain.ServiceDecomposition from [Module \"deployment.camunda-rest-api-1.2.0-SNAPSHOT.war:main\" from Service Module Loader]",
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Null",
- "value": null,
- "valueInfo": {
-
- },
- "id": "5aea904f-9736-11e8-8caf-022ac9304eeb",
- "name": "WorkflowException",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Object",
- "value": [],
- "valueInfo": {
- "objectTypeName": "java.util.ArrayList",
- "serializationDataFormat": "application/x-java-serialized-object"
- },
- "id": "5aedc4a4-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfList",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "[]",
- "valueInfo": {
-
- },
- "id": "5aedc4a8-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfListString",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Integer",
- "value": 0,
- "valueInfo": {
-
- },
- "id": "5aedebba-9736-11e8-8caf-022ac9304eeb",
- "name": "CVRCS_VNFsCount",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "5aedebbc-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfModelInfo",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "",
- "valueInfo": {
-
- },
- "id": "5aedebbe-9736-11e8-8caf-022ac9304eeb",
- "name": "vnfModelInfoString",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "{\n \"serviceInstance\" : {\n \"instanceId\" : \"744fee42-8e20-4152-ad75-17fb1ebfc5b2\"\n },\n \"serviceNetworks\" : [ ],\n \"serviceVnfs\" : [ ],\n \"serviceAllottedResources\" : [ ],\n \"modelInfo\" : {\n \"modelName\" : \"PNFSERVIVE\",\n \"modelUuid\" : \"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\",\n \"modelInvariantUuid\" : \"8e2be9fa-fffb-4e23-89a5-65497709f507\",\n \"modelVersion\" : \"1.0\",\n \"modelCustomizationUuid\" : \"\",\n \"modelCustomizationName\" : \"\",\n \"modelInstanceName\" : \"\",\n \"modelType\" : \"\"\n },\n \"serviceType\" : \"aaa\",\n \"serviceRole\" : \"aaa\",\n \"vnfResource\" : [ ],\n \"networkResource\" : [ ],\n \"allottedResource\" : [ ]\n}",
- "valueInfo": {
-
- },
- "id": "5af083d4-9736-11e8-8caf-022ac9304eeb",
- "name": "serviceDecompositionString",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Null",
- "value": null,
- "valueInfo": {
-
- },
- "id": "5e7eb37e-9736-11e8-8caf-022ac9304eeb",
- "name": "rolledBack",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "Object",
- "value": null,
- "valueInfo": null,
- "id": "5e7eda91-9736-11e8-8caf-022ac9304eeb",
- "name": "DCRESI_rollbackData",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": "Cannot deserialize object in variable 'DCRESI_rollbackData': ENGINE-09017 Cannot load class 'org.openecomp.mso.bpmn.core.RollbackData': org.openecomp.mso.bpmn.core.RollbackData from [Module \"deployment.camunda-rest-api-1.2.0-SNAPSHOT.war:main\" from Service Module Loader]",
- "tenantId": null,
- "state": "CREATED"
- },
- {
- "type": "String",
- "value": "\n <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:req=\"http://org.openecomp.mso/requestsdb\">\n <soapenv:Header/>\n <soapenv:Body>\n <req:updateInfraRequest>\n <requestId>55b3f0ea-70c5-4965-9e00-df77ed1552a3</requestId>\n <lastModifiedBy>BPEL</lastModifiedBy>\n <serviceInstanceId>744fee42-8e20-4152-ad75-17fb1ebfc5b2</serviceInstanceId>\n <serviceInstanceName>AFRPOSTMAN51</serviceInstanceName>\n </req:updateInfraRequest>\n </soapenv:Body>\n </soapenv:Envelope>\n ",
- "valueInfo": {
-
- },
- "id": "5e825d08-9736-11e8-8caf-022ac9304eeb",
- "name": "CVRCS_setUpdateDbInstancePayload",
- "processDefinitionKey": "AFRFLOW",
- "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
- "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "caseDefinitionKey": null,
- "caseDefinitionId": null,
- "caseInstanceId": null,
- "caseExecutionId": null,
- "taskId": null,
- "errorMessage": null,
- "tenantId": null,
- "state": "CREATED"
- }
-] \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json
deleted file mode 100644
index d1e70e1957..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "id": "5956a99d-9736-11e8-8caf-022ac9304eeb",
- "businessKey": "203b9171-c113-435e-aaa6-f47cb836e3cb",
- "processDefinitionId": "EricssonNetworkSliceV1:3:28f9e0fc-9b00-11e8-a57a-022ac90273ed",
- "processDefinitionKey": "EricssonNetworkSliceV1",
- "processDefinitionName": "EricssonNetworkSliceV1",
- "processDefinitionVersion": 3,
- "startTime": "2018-08-14T09:52:46.105+0000",
- "endTime": "2018-08-14T09:53:50.499+0000",
- "durationInMillis": 64394,
- "startUserId": null,
- "startActivityId": "createVCPE_startEvent",
- "deleteReason": null,
- "superProcessInstanceId": null,
- "superCaseInstanceId": null,
- "caseInstanceId": null,
- "tenantId": null,
- "state": "COMPLETED"
-} \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json b/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json
deleted file mode 100644
index 90c27efcbd..0000000000
--- a/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json
+++ /dev/null
@@ -1,161 +0,0 @@
-[
- {
- "requestId": "a5294d37-21db-4e3a-ae04-57412adcb4ac",
- "clientRequestId": null,
- "action": "createInstance",
- "requestStatus": "COMPLETE",
- "statusMessage": null,
- "rollbackStatusMessage": null,
- "flowStatus": null,
- "retryStatusMessage": null,
- "progress": null,
- "startTime": 1546346700000,
- "endTime": 1546347000000,
- "source": null,
- "vnfId": null,
- "vnfName": null,
- "vnfType": null,
- "serviceType": null,
- "aicNodeClli": null,
- "tenantId": null,
- "provStatus": null,
- "vnfParams": null,
- "vnfOutputs": null,
- "requestBody": null,
- "responseBody": null,
- "lastModifiedBy": null,
- "modifyTime": null,
- "requestType": null,
- "volumeGroupId": null,
- "volumeGroupName": null,
- "vfModuleId": null,
- "vfModuleName": null,
- "vfModuleModelName": null,
- "aaiServiceId": null,
- "aicCloudRegion": null,
- "callBackUrl": null,
- "correlator": null,
- "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84",
- "serviceInstanceName": "ShouldReturnInSearchQuery_1",
- "requestScope": null,
- "requestAction": null,
- "networkId": null,
- "networkName": null,
- "networkType": null,
- "requestorId": null,
- "configurationId": null,
- "configurationName": null,
- "operationalEnvId": null,
- "operationalEnvName": null,
- "instanceGroupId": null,
- "instanceGroupName": null,
- "requestUrl": null,
- "requestURI": "a5294d37-21db-4e3a-ae04-57412adcb4ac"
- },
- {
- "requestId": "9383dc81-7a6c-4673-8082-650d50a82a1a",
- "clientRequestId": null,
- "action": "createInstance",
- "requestStatus": "IN_PROGRESS",
- "statusMessage": null,
- "rollbackStatusMessage": null,
- "flowStatus": null,
- "retryStatusMessage": null,
- "progress": null,
- "startTime": 1546347300000,
- "endTime": null,
- "source": null,
- "vnfId": null,
- "vnfName": null,
- "vnfType": null,
- "serviceType": null,
- "aicNodeClli": null,
- "tenantId": null,
- "provStatus": null,
- "vnfParams": null,
- "vnfOutputs": null,
- "requestBody": null,
- "responseBody": null,
- "lastModifiedBy": null,
- "modifyTime": null,
- "requestType": null,
- "volumeGroupId": null,
- "volumeGroupName": null,
- "vfModuleId": null,
- "vfModuleName": null,
- "vfModuleModelName": null,
- "aaiServiceId": null,
- "aicCloudRegion": null,
- "callBackUrl": null,
- "correlator": null,
- "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84",
- "serviceInstanceName": "ShouldReturnInSearchQuery_2",
- "requestScope": null,
- "requestAction": null,
- "networkId": null,
- "networkName": null,
- "networkType": null,
- "requestorId": null,
- "configurationId": null,
- "configurationName": null,
- "operationalEnvId": null,
- "operationalEnvName": null,
- "instanceGroupId": null,
- "instanceGroupName": null,
- "requestUrl": null,
- "requestURI": "9383dc81-7a6c-4673-8082-650d50a82a1a"
- },
- {
- "requestId": "a1abeab2-f8ef-43ab-b76c-9c3c2cb9980f",
- "clientRequestId": null,
- "action": "activateInstance",
- "requestStatus": "FAILED",
- "statusMessage": null,
- "rollbackStatusMessage": null,
- "flowStatus": null,
- "retryStatusMessage": null,
- "progress": null,
- "startTime": 1546347600000,
- "endTime": 1546351200000,
- "source": null,
- "vnfId": null,
- "vnfName": null,
- "vnfType": null,
- "serviceType": null,
- "aicNodeClli": null,
- "tenantId": null,
- "provStatus": null,
- "vnfParams": null,
- "vnfOutputs": null,
- "requestBody": null,
- "responseBody": null,
- "lastModifiedBy": null,
- "modifyTime": null,
- "requestType": null,
- "volumeGroupId": null,
- "volumeGroupName": null,
- "vfModuleId": null,
- "vfModuleName": null,
- "vfModuleModelName": null,
- "aaiServiceId": null,
- "aicCloudRegion": null,
- "callBackUrl": null,
- "correlator": null,
- "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84",
- "serviceInstanceName": "ShouldReturnInSearchQuery_3",
- "requestScope": null,
- "requestAction": null,
- "networkId": null,
- "networkName": null,
- "networkType": null,
- "requestorId": null,
- "configurationId": null,
- "configurationName": null,
- "operationalEnvId": null,
- "operationalEnvName": null,
- "instanceGroupId": null,
- "instanceGroupName": null,
- "requestUrl": null,
- "requestURI": "a1abeab2-f8ef-43ab-b76c-9c3c2cb9980f"
- }
-] \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-ui/.gitignore b/so-monitoring/so-monitoring-ui/.gitignore
deleted file mode 100644
index 6cf36fd5ef..0000000000
--- a/so-monitoring/so-monitoring-ui/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-# compiled output
-dist
-dist-server
-tmp
-
-# dependencies
-node_modules
-node_modules/*
-
-# # IDEs and editors
-/.idea
-.project
-.classpath
-*.launch
-.settings/
-
-# e2e
-e2e/*.js
-e2e/*.map
-
-
-#java
-.project
-.idea/
-/target/
-.settings*
-.classpath
diff --git a/so-monitoring/so-monitoring-ui/pom.xml b/so-monitoring/so-monitoring-ui/pom.xml
deleted file mode 100644
index 574d78287a..0000000000
--- a/so-monitoring/so-monitoring-ui/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- SPDX-License-Identifier: Apache-2.0
- ============LICENSE_END=========================================================
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.so.monitoring</groupId>
- <artifactId>so-monitoring</artifactId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
- <artifactId>so-monitoring-ui</artifactId>
-
- <properties>
- <yarn.proxy>false</yarn.proxy>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>com.github.eirslett</groupId>
- <artifactId>frontend-maven-plugin</artifactId>
- <version>1.6</version>
- <configuration>
- <workingDirectory>${project.basedir}/src/main/frontend</workingDirectory>
- <installDirectory>target</installDirectory>
- </configuration>
- <executions>
- <execution>
- <id>install node and yarn</id>
- <goals>
- <goal>install-node-and-yarn</goal>
- </goals>
- <phase>generate-resources</phase>
- <configuration>
- <nodeVersion>v10.19.0</nodeVersion>
- <yarnVersion>v1.7.0</yarnVersion>
- </configuration>
- </execution>
- <execution>
- <id>yarn install</id>
- <goals>
- <goal>yarn</goal>
- </goals>
- <configuration>
- <arguments>install</arguments>
- </configuration>
- </execution>
- <execution>
- <id>yarn run webpack build</id>
- <goals>
- <goal>yarn</goal>
- </goals>
- <configuration>
- <yarnInheritsProxyConfigFromMaven>${yarn.proxy}</yarnInheritsProxyConfigFromMaven>
- <arguments>build</arguments>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-clean-plugin</artifactId>
- <version>3.0.0</version>
- <configuration>
- <failOnError>false</failOnError>
- <filesets>
- <fileset>
- <directory>${project.basedir}/src/main/frontend/dist/</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/.editorconfig b/so-monitoring/so-monitoring-ui/src/main/frontend/.editorconfig
deleted file mode 100644
index f6f117cba5..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# Editor configuration, see http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/.gitignore b/so-monitoring/so-monitoring-ui/src/main/frontend/.gitignore
deleted file mode 100644
index 43dd0607ab..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/.gitignore
+++ /dev/null
@@ -1,39 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-/out-tsc
-
-# dependencies
-/node_modules
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage
-/libpeerconnection.log
-npm-debug.log
-yarn-error.log
-testem.log
-/typings
-
-# System Files
-.DS_Store
-Thumbs.db
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/README.md b/so-monitoring/so-monitoring-ui/src/main/frontend/README.md
deleted file mode 100644
index 329de0f833..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# ONAPSOMonitor
-
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8.
-
-## Development server
-
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
-
-## Code scaffolding
-
-Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
-
-## Build
-
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
-
-## Running unit tests
-
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
-
-## Running end-to-end tests
-
-Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
-
-## Further help
-
-To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/angular.json b/so-monitoring/so-monitoring-ui/src/main/frontend/angular.json
deleted file mode 100644
index 45feb6007c..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/angular.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "version": 1,
- "newProjectRoot": "projects",
- "projects": {
- "ONAP-SO-Monitor": {
- "root": "",
- "sourceRoot": "src",
- "projectType": "application",
- "prefix": "app",
- "schematics": {
- "@schematics/angular:component": {
- "styleext": "scss"
- }
- },
- "architect": {
- "build": {
- "builder": "@angular-devkit/build-angular:browser",
- "options": {
- "outputPath": "dist/ONAP-SO-Monitor",
- "index": "src/index.html",
- "main": "src/main.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "src/tsconfig.app.json",
- "assets": [
- "src/favicon.png",
- "src/assets"
- ],
- "styles": [{
- "input": "node_modules/bootstrap/dist/css/bootstrap.min.css"
- },
- "src/styles.scss",
- "node_modules/toastr/build/toastr.min.css"
- ],
- "scripts": ["node_modules/jquery/dist/jquery.min.js", "node_modules/toastr/build/toastr.min.js"]
- },
- "configurations": {
- "production": {
- "fileReplacements": [{
- "replace": "src/environments/environment.ts",
- "with": "src/environments/environment.prod.ts"
- }],
- "optimization": true,
- "outputHashing": "all",
- "sourceMap": false,
- "extractCss": true,
- "namedChunks": false,
- "aot": true,
- "extractLicenses": true,
- "vendorChunk": false,
- "buildOptimizer": true
- }
- }
- },
- "serve": {
- "builder": "@angular-devkit/build-angular:dev-server",
- "options": {
- "browserTarget": "ONAP-SO-Monitor:build",
- "sslKey": "src/app/ssl/localhost.key",
- "sslCert": "src/app/ssl/localhost.crt"
- },
- "configurations": {
- "production": {
- "browserTarget": "ONAP-SO-Monitor:build:production"
- }
- }
- },
- "extract-i18n": {
- "builder": "@angular-devkit/build-angular:extract-i18n",
- "options": {
- "browserTarget": "ONAP-SO-Monitor:build"
- }
- },
- "test": {
- "builder": "@angular-devkit/build-angular:karma",
- "options": {
- "main": "src/test.ts",
- "polyfills": "src/polyfills.ts",
- "tsConfig": "src/tsconfig.spec.json",
- "karmaConfig": "src/karma.conf.js",
- "styles": [{
- "input": "node_modules/@progress/kendo-theme-default/dist/all.css"
- },
- "src/styles.scss"
- ],
- "scripts": [],
- "assets": [
- "src/favicon.ico",
- "src/assets"
- ]
- }
- },
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
- "options": {
- "tsConfig": [
- "src/tsconfig.app.json",
- "src/tsconfig.spec.json"
- ],
- "exclude": [
- "**/node_modules/**"
- ]
- }
- }
- }
- },
- "ONAP-SO-Monitor-e2e": {
- "root": "e2e/",
- "projectType": "application",
- "architect": {
- "e2e": {
- "builder": "@angular-devkit/build-angular:protractor",
- "options": {
- "protractorConfig": "e2e/protractor.conf.js",
- "devServerTarget": "ONAP-SO-Monitor:serve"
- },
- "configurations": {
- "production": {
- "devServerTarget": "ONAP-SO-Monitor:serve:production"
- }
- }
- },
- "lint": {
- "builder": "@angular-devkit/build-angular:tslint",
- "options": {
- "tsConfig": "e2e/tsconfig.e2e.json",
- "exclude": [
- "**/node_modules/**"
- ]
- }
- }
- }
- }
- },
- "defaultProject": "ONAP-SO-Monitor"
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/protractor.conf.js b/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/protractor.conf.js
deleted file mode 100644
index ba328a64b7..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/protractor.conf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Protractor configuration file, see link for more information
-// https://github.com/angular/protractor/blob/master/lib/config.ts
-
-const { SpecReporter } = require('jasmine-spec-reporter');
-
-exports.config = {
- allScriptsTimeout: 11000,
- specs: [
- './src/**/*.e2e-spec.ts'
- ],
- capabilities: {
- 'browserName': 'chrome'
- },
- directConnect: true,
- baseUrl: 'http://localhost:4200/',
- framework: 'jasmine',
- jasmineNodeOpts: {
- showColors: true,
- defaultTimeoutInterval: 30000,
- print: function() {}
- },
- onPrepare() {
- require('ts-node').register({
- project: require('path').join(__dirname, './tsconfig.e2e.json')
- });
- jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
- }
-}; \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.e2e-spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.e2e-spec.ts
deleted file mode 100644
index ea758985ec..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.e2e-spec.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { AppPage } from './app.po';
-
-describe('workspace-project App', () => {
- let page: AppPage;
-
- beforeEach(() => {
- page = new AppPage();
- });
-
- it('should display welcome message', () => {
- page.navigateTo();
- expect(page.getParagraphText()).toEqual('Welcome to ONAP-SO-Monitor!');
- });
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.po.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.po.ts
deleted file mode 100644
index 625420f7c1..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/src/app.po.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { browser, by, element } from 'protractor';
-
-export class AppPage {
- navigateTo() {
- return browser.get('/');
- }
-
- getParagraphText() {
- return element(by.css('app-root h1')).getText();
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/tsconfig.e2e.json b/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/tsconfig.e2e.json
deleted file mode 100644
index a6dd622028..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/e2e/tsconfig.e2e.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/app",
- "module": "commonjs",
- "target": "es5",
- "types": [
- "jasmine",
- "jasminewd2",
- "node"
- ]
- }
-} \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/package-lock.json b/so-monitoring/so-monitoring-ui/src/main/frontend/package-lock.json
deleted file mode 100644
index da937fb46c..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/package-lock.json
+++ /dev/null
@@ -1,10768 +0,0 @@
-{
- "name": "onap-so-monitor",
- "version": "0.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@angular-devkit/architect": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.8.tgz",
- "integrity": "sha512-ZKTm/zC61iY9IBHOEAKoMSzZpvhkmv+1O/HHzpHEuR551jCzu6vSyCmMY9Z7GBcccscCV+hjeSMwgFrFRcqlkw==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "0.6.8",
- "rxjs": "^6.0.0"
- }
- },
- "@angular-devkit/build-angular": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz",
- "integrity": "sha512-VGqYAk8jpISraz2UHfsDre270NOUmV0CTSZw2p9sm5g/XIr5m+IHetFZz3gpoAr9+If2aFTs8Rt3sGdCRzwBqA==",
- "dev": true,
- "requires": {
- "@angular-devkit/architect": "0.6.8",
- "@angular-devkit/build-optimizer": "0.6.8",
- "@angular-devkit/core": "0.6.8",
- "@ngtools/webpack": "6.0.8",
- "ajv": "~6.4.0",
- "autoprefixer": "^8.4.1",
- "cache-loader": "^1.2.2",
- "chalk": "~2.2.2",
- "circular-dependency-plugin": "^5.0.2",
- "clean-css": "^4.1.11",
- "copy-webpack-plugin": "^4.5.1",
- "file-loader": "^1.1.11",
- "glob": "^7.0.3",
- "html-webpack-plugin": "^3.0.6",
- "istanbul": "^0.4.5",
- "istanbul-instrumenter-loader": "^3.0.1",
- "karma-source-map-support": "^1.2.0",
- "less": "^3.0.4",
- "less-loader": "^4.1.0",
- "license-webpack-plugin": "^1.3.1",
- "lodash": "^4.17.4",
- "memory-fs": "^0.4.1",
- "mini-css-extract-plugin": "~0.4.0",
- "minimatch": "^3.0.4",
- "node-sass": "^4.9.0",
- "opn": "^5.1.0",
- "parse5": "^4.0.0",
- "portfinder": "^1.0.13",
- "postcss": "^6.0.22",
- "postcss-import": "^11.1.0",
- "postcss-loader": "^2.1.5",
- "postcss-url": "^7.3.2",
- "raw-loader": "^0.5.1",
- "resolve": "^1.5.0",
- "rxjs": "^6.0.0",
- "sass-loader": "^7.0.1",
- "silent-error": "^1.1.0",
- "source-map-support": "^0.5.0",
- "stats-webpack-plugin": "^0.6.2",
- "style-loader": "^0.21.0",
- "stylus": "^0.54.5",
- "stylus-loader": "^3.0.2",
- "tree-kill": "^1.2.0",
- "uglifyjs-webpack-plugin": "^1.2.5",
- "url-loader": "^1.0.1",
- "webpack": "~4.8.1",
- "webpack-dev-middleware": "^3.1.3",
- "webpack-dev-server": "^3.1.4",
- "webpack-merge": "^4.1.2",
- "webpack-sources": "^1.1.0",
- "webpack-subresource-integrity": "^1.1.0-rc.4"
- }
- },
- "@angular-devkit/build-optimizer": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz",
- "integrity": "sha512-of5syQbv3uNPp4AQkfRecfnp8AE8kvffbfYi+FFPZ6OGr7e59T1fGwk6+Zgb2qQFQg8HO2tzWI/uygtLIqmbmw==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "source-map": "^0.5.6",
- "typescript": "~2.9.1",
- "webpack-sources": "^1.1.0"
- },
- "dependencies": {
- "typescript": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
- "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
- "dev": true
- }
- }
- },
- "@angular-devkit/core": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.8.tgz",
- "integrity": "sha512-rkIa1OSVWTt4g9leLSK/PsqOj3HZbDKHbZjqlslyfVa3AyCeiumFoOgViOVXlYgPX3HHDbE5uH24nyUWSD8uww==",
- "dev": true,
- "requires": {
- "ajv": "~6.4.0",
- "chokidar": "^2.0.3",
- "rxjs": "^6.0.0",
- "source-map": "^0.5.6"
- }
- },
- "@angular-devkit/schematics": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.8.tgz",
- "integrity": "sha512-R4YqAUdo62wtrhX/5HSRGSKXNTWqfQb66ZE6m8jj6GEJNFKdNXMdxOchxr07LCiKTxfh1w6G3nGzxIsu/+D4KA==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "0.6.8",
- "rxjs": "^6.0.0"
- }
- },
- "@angular/animations": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.3.tgz",
- "integrity": "sha512-uLKq+bdfo+/jLW/C6lkUVsB7m+e8j18MjZGHlphI07jW6KvutX+AXdPUI/RMkkWRjZp11aF727PAQ6y3DyqB+Q==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/cdk": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.5.tgz",
- "integrity": "sha512-bbz8lHzY1NXPqrvHcZTOOD6+BiDNPKXC00xwzls62NPmiueBaWGwQdk7s3sa/0kCyq1ZKrPD3KQIDMyytxlzzw==",
- "requires": {
- "tslib": "^1.7.1"
- }
- },
- "@angular/cli": {
- "version": "6.0.8",
- "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.8.tgz",
- "integrity": "sha512-DhH1Zq5Yonthw6zh6W07fhf+9XrAZbD1fcQ0MrmbxlieCfLlTAdBqyK2LavFCKwSZkUMLF6UHM3+jiNRVZSSIg==",
- "dev": true,
- "requires": {
- "@angular-devkit/architect": "0.6.8",
- "@angular-devkit/core": "0.6.8",
- "@angular-devkit/schematics": "0.6.8",
- "@schematics/angular": "0.6.8",
- "@schematics/update": "0.6.8",
- "opn": "~5.3.0",
- "resolve": "^1.1.7",
- "rxjs": "^6.0.0",
- "semver": "^5.1.0",
- "silent-error": "^1.0.0",
- "symbol-observable": "^1.2.0",
- "yargs-parser": "^10.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "yargs-parser": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
- "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "@angular/common": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.3.tgz",
- "integrity": "sha512-1V3pDdEty4hYsdpePlcNUE8rF1w1NP8LW6Q1ICNk86MI472W1U9ZTDFwCYcQYDiYMtzBrgXcnE1q6u1rqTdygQ==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/compiler": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.3.tgz",
- "integrity": "sha512-r8Nv4wo2QNmsGs/sjxcR6z6YG17TfaAAxAl/6yk3z3DNdDM76cBwTi9hurXlmZKPU6/2YFI+ZwvhBrGwaOZd5Q==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/compiler-cli": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.3.tgz",
- "integrity": "sha512-YSVoLMaCF0mvt0CPRGldKMCJDGju82XhsupbDOZsMddVG6hRl8dRbem7OChJp+8GV+UNsfbP/X2o4ERLROHXRA==",
- "dev": true,
- "requires": {
- "chokidar": "^1.4.2",
- "minimist": "^1.2.0",
- "reflect-metadata": "^0.1.2",
- "tsickle": "^0.32.1"
- },
- "dependencies": {
- "anymatch": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
- "dev": true,
- "requires": {
- "micromatch": "^2.1.5",
- "normalize-path": "^2.0.0"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "chokidar": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
- "dev": true,
- "requires": {
- "anymatch": "^1.3.0",
- "async-each": "^1.0.0",
- "fsevents": "^1.0.0",
- "glob-parent": "^2.0.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^2.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0"
- }
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "@angular/core": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.3.tgz",
- "integrity": "sha512-pqRfQphqIEExhDWM3RRusvLY6gFN0zdITC7TqQy6Wof6VKgWOvfHiHPbiamw4kpEzflMekuOeNm0s6h6hIUnWA==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/forms": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.3.tgz",
- "integrity": "sha512-8pHVQ97S0W//GsYsGuGV/SyzkMAF/bcE1AqDg4HXNU3mKOl5lthfM+PxHz23Cdzkg/GVInwRNxUl2Q+6lb8zuw==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/http": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.3.tgz",
- "integrity": "sha512-1IZ+8i1gIoPDD57Yv/8fEjzdFfWM7nY5JZGyjWUkWxq/A19zjkR4C1nRCI6KiWHk0QFx2e1Sl6OFqyiphwhalw==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/language-service": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.1.3.tgz",
- "integrity": "sha512-cAIptulTWn1LGFTmRzBbNY4axhnyQl/YaocX0JqutmI+eaWTofSiDwHVB2spYSDTWhy9fg+OMK2KmhghpZmc1g==",
- "dev": true
- },
- "@angular/material": {
- "version": "6.4.5",
- "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.5.tgz",
- "integrity": "sha512-3wDRfGqlRSo3CBA1XuPXSz7zAwZF5kotXEgbZhIAocv+nsXa73DyPNceAQ++Pu7rFR3ipg6McyggP0OCOgv7NQ==",
- "requires": {
- "parse5": "^5.0.0",
- "tslib": "^1.7.1"
- },
- "dependencies": {
- "parse5": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz",
- "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
- "optional": true
- }
- }
- },
- "@angular/platform-browser": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.3.tgz",
- "integrity": "sha512-ml844B5g8UtQaOK2QCdTRSTRHWa1elTbg4ph65GTs0lNMH/tLFNn8tvcPOfMh21ZV3fh6yqA6a9wMjSMTVSiWg==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/platform-browser-dynamic": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.3.tgz",
- "integrity": "sha512-6b4Y8f4yhuUJrAVsHyYWRbRSaIQUzZWSbYvWLVZeXnt4HKzRhX+zO5yTA/eXCXAce+fRIU239FbkeyqtpuogPQ==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@angular/router": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.3.tgz",
- "integrity": "sha512-6sb1yH/a2CACcbXZ6d+PYWGgwV3BXupCQXBd8Q5h7o3/r5zz18VATdRqBWtSIOmFr11wekJrGGRMxDCpTDlXvg==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "@ngtools/webpack": {
- "version": "6.0.8",
- "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.8.tgz",
- "integrity": "sha512-jorGpTd82ILbyUwg4JQekovHFaYwSMlZan4f7x+sd3+2WgyL3Z1+ZbVSGKvXZWKS/mAVx7eLkRikzJkuC4FgHw==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "0.6.8",
- "tree-kill": "^1.0.0",
- "webpack-sources": "^1.1.0"
- }
- },
- "@schematics/angular": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.8.tgz",
- "integrity": "sha512-9kRphqTYG5Df/I8fvnT1zMsw0YNDPO9tl18tQZXj4am4raT7l9UCr+WkwJdlBoA5pwG6baWE9sL0iGWV/bzF/g==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "0.6.8",
- "@angular-devkit/schematics": "0.6.8",
- "typescript": ">=2.6.2 <2.8"
- }
- },
- "@schematics/update": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.8.tgz",
- "integrity": "sha512-1Uq7LYnwL2wBwGVCgNz76QAR13ghAk+2vDDHOi+VX5+usHManxydrpoMGeX66OBPd+y5D3D2MFb+8mYHE7mygg==",
- "dev": true,
- "requires": {
- "@angular-devkit/core": "0.6.8",
- "@angular-devkit/schematics": "0.6.8",
- "npm-registry-client": "^8.5.1",
- "rxjs": "^6.0.0",
- "semver": "^5.3.0",
- "semver-intersect": "^1.1.2"
- }
- },
- "@types/jasmine": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz",
- "integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==",
- "dev": true
- },
- "@types/jasminewd2": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz",
- "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==",
- "dev": true,
- "requires": {
- "@types/jasmine": "*"
- }
- },
- "@types/node": {
- "version": "8.9.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz",
- "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==",
- "dev": true
- },
- "@types/q": {
- "version": "0.0.32",
- "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
- "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
- "dev": true
- },
- "@types/selenium-webdriver": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz",
- "integrity": "sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA==",
- "dev": true
- },
- "@webassemblyjs/ast": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz",
- "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==",
- "dev": true,
- "requires": {
- "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
- "@webassemblyjs/wast-parser": "1.4.3",
- "debug": "^3.1.0",
- "webassemblyjs": "1.4.3"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "@webassemblyjs/floating-point-hex-parser": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz",
- "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==",
- "dev": true
- },
- "@webassemblyjs/helper-buffer": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz",
- "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==",
- "dev": true,
- "requires": {
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "@webassemblyjs/helper-code-frame": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz",
- "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==",
- "dev": true,
- "requires": {
- "@webassemblyjs/wast-printer": "1.4.3"
- }
- },
- "@webassemblyjs/helper-fsm": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz",
- "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==",
- "dev": true
- },
- "@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz",
- "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==",
- "dev": true
- },
- "@webassemblyjs/helper-wasm-section": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz",
- "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/helper-buffer": "1.4.3",
- "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
- "@webassemblyjs/wasm-gen": "1.4.3",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "@webassemblyjs/leb128": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz",
- "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==",
- "dev": true,
- "requires": {
- "leb": "^0.3.0"
- }
- },
- "@webassemblyjs/validation": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz",
- "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3"
- }
- },
- "@webassemblyjs/wasm-edit": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz",
- "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/helper-buffer": "1.4.3",
- "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
- "@webassemblyjs/helper-wasm-section": "1.4.3",
- "@webassemblyjs/wasm-gen": "1.4.3",
- "@webassemblyjs/wasm-opt": "1.4.3",
- "@webassemblyjs/wasm-parser": "1.4.3",
- "@webassemblyjs/wast-printer": "1.4.3",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "@webassemblyjs/wasm-gen": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz",
- "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
- "@webassemblyjs/leb128": "1.4.3"
- }
- },
- "@webassemblyjs/wasm-opt": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz",
- "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/helper-buffer": "1.4.3",
- "@webassemblyjs/wasm-gen": "1.4.3",
- "@webassemblyjs/wasm-parser": "1.4.3",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "@webassemblyjs/wasm-parser": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz",
- "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
- "@webassemblyjs/leb128": "1.4.3",
- "@webassemblyjs/wasm-parser": "1.4.3",
- "webassemblyjs": "1.4.3"
- }
- },
- "@webassemblyjs/wast-parser": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz",
- "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/floating-point-hex-parser": "1.4.3",
- "@webassemblyjs/helper-code-frame": "1.4.3",
- "@webassemblyjs/helper-fsm": "1.4.3",
- "long": "^3.2.0",
- "webassemblyjs": "1.4.3"
- }
- },
- "@webassemblyjs/wast-printer": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz",
- "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/wast-parser": "1.4.3",
- "long": "^3.2.0"
- }
- },
- "@webpack-contrib/schema-utils": {
- "version": "1.0.0-beta.0",
- "resolved": "https://registry.npmjs.org/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz",
- "integrity": "sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0",
- "chalk": "^2.3.2",
- "strip-ansi": "^4.0.0",
- "text-table": "^0.2.0",
- "webpack-log": "^1.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "abbrev": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
- "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
- "dev": true
- },
- "accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
- "dev": true,
- "requires": {
- "mime-types": "~2.1.18",
- "negotiator": "0.6.1"
- }
- },
- "acorn": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
- "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
- "dev": true
- },
- "acorn-dynamic-import": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
- "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
- "dev": true,
- "requires": {
- "acorn": "^5.0.0"
- }
- },
- "adm-zip": {
- "version": "0.4.11",
- "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz",
- "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==",
- "dev": true
- },
- "after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
- "dev": true
- },
- "agent-base": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
- "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
- "dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
- }
- },
- "ajv": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
- "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0",
- "uri-js": "^3.0.2"
- }
- },
- "ajv-errors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz",
- "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=",
- "dev": true
- },
- "ajv-keywords": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
- "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
- "dev": true
- },
- "align-text": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
- "ansi-html": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
- "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
- "dev": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
- "dev": true,
- "requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "app-root-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz",
- "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=",
- "dev": true
- },
- "append-transform": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
- "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
- "dev": true,
- "requires": {
- "default-require-extensions": "^2.0.0"
- }
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "array-flatten": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
- "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
- "dev": true
- },
- "array-includes": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
- "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.7.0"
- }
- },
- "array-slice": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "arraybuffer.slice": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
- "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
- "dev": true,
- "optional": true
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "asn1.js": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
- "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "assert": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
- "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
- "dev": true,
- "requires": {
- "util": "0.10.3"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
- "dev": true
- },
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "dev": true,
- "requires": {
- "inherits": "2.0.1"
- }
- }
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "async-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
- "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
- "dev": true
- },
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
- "dev": true,
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "autoprefixer": {
- "version": "8.6.5",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz",
- "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==",
- "dev": true,
- "requires": {
- "browserslist": "^3.2.8",
- "caniuse-lite": "^1.0.30000864",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^6.0.23",
- "postcss-value-parser": "^3.2.3"
- }
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
- "dev": true
- },
- "babel-code-frame": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "esutils": "^2.0.2",
- "js-tokens": "^3.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "babel-generator": {
- "version": "6.26.1",
- "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
- "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
- "dev": true,
- "requires": {
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "detect-indent": "^4.0.0",
- "jsesc": "^1.3.0",
- "lodash": "^4.17.4",
- "source-map": "^0.5.7",
- "trim-right": "^1.0.1"
- }
- },
- "babel-messages": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
- "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.22.0"
- }
- },
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
- "requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
- }
- },
- "babel-template": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
- "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "babel-traverse": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "lodash": "^4.17.4"
- }
- },
- "babel-traverse": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
- "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
- "dev": true,
- "requires": {
- "babel-code-frame": "^6.26.0",
- "babel-messages": "^6.23.0",
- "babel-runtime": "^6.26.0",
- "babel-types": "^6.26.0",
- "babylon": "^6.18.0",
- "debug": "^2.6.8",
- "globals": "^9.18.0",
- "invariant": "^2.2.2",
- "lodash": "^4.17.4"
- }
- },
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "dev": true,
- "requires": {
- "babel-runtime": "^6.26.0",
- "esutils": "^2.0.2",
- "lodash": "^4.17.4",
- "to-fast-properties": "^1.0.3"
- }
- },
- "babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
- "dev": true
- },
- "backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "base64-arraybuffer": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
- "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
- "dev": true
- },
- "base64-js": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
- "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
- "dev": true
- },
- "base64id": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
- "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
- "dev": true
- },
- "batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "optional": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "better-assert": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
- "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
- "dev": true,
- "requires": {
- "callsite": "1.0.0"
- }
- },
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "binary-extensions": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
- "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
- "dev": true
- },
- "blob": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
- "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
- "dev": true
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "optional": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
- "blocking-proxy": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
- "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
- "dev": true
- },
- "bn.js": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
- "dev": true
- },
- "body-parser": {
- "version": "1.18.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
- "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
- "dev": true,
- "requires": {
- "bytes": "3.0.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.1",
- "http-errors": "~1.6.2",
- "iconv-lite": "0.4.19",
- "on-finished": "~2.3.0",
- "qs": "6.5.1",
- "raw-body": "2.3.2",
- "type-is": "~1.6.15"
- },
- "dependencies": {
- "qs": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
- }
- }
- },
- "bonjour": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
- "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
- "dev": true,
- "requires": {
- "array-flatten": "^2.1.0",
- "deep-equal": "^1.0.1",
- "dns-equal": "^1.0.0",
- "dns-txt": "^2.0.2",
- "multicast-dns": "^6.0.1",
- "multicast-dns-service-types": "^1.1.0"
- }
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
- "dev": true
- },
- "bootstrap": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz",
- "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w=="
- },
- "bpmn-font": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/bpmn-font/-/bpmn-font-0.8.0.tgz",
- "integrity": "sha512-j8u5k7EcGkmg7WkPgObxyvMEccr0qyiCuvXGnM5G2Q+kza119vVq3gblt0Rro/UDjl7i3VmfG3ojeZ04VHeVFg=="
- },
- "bpmn-js": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-2.4.1.tgz",
- "integrity": "sha512-KeB2uLwjI0KZumy1/GfrNd+mV4SjAMsv+AUYI0CCk3TJTynpSsbg7PpWdIa7pBqifnpDlSxCqwaNm+jrF5UDmg==",
- "requires": {
- "bpmn-font": "^0.8.0",
- "bpmn-moddle": "^5.1.5",
- "css.escape": "^1.5.1",
- "diagram-js": "^2.5.1",
- "diagram-js-direct-editing": "^1.3.0",
- "ids": "^0.2.0",
- "inherits": "^2.0.1",
- "min-dash": "^3.0.0",
- "min-dom": "^3.0.0",
- "object-refs": "^0.3.0",
- "tiny-svg": "^2.0.0"
- }
- },
- "bpmn-moddle": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-5.1.5.tgz",
- "integrity": "sha512-1f/1oTmnC1z14T69SQHdkBJZTM240ScPKCf39I1HX8Cg1dKaLSdWdhhlCtTJoGLn1eBpkLq/Pw5oE6FOlCAdsw==",
- "requires": {
- "min-dash": "^3.0.0",
- "moddle": "^4.1.0",
- "moddle-xml": "^7.2.3"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
- },
- "browserify-aes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
- "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
- "requires": {
- "buffer-xor": "^1.0.3",
- "cipher-base": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.3",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "browserify-cipher": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
- "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
- "requires": {
- "browserify-aes": "^1.0.4",
- "browserify-des": "^1.0.0",
- "evp_bytestokey": "^1.0.0"
- }
- },
- "browserify-des": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
- "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "des.js": "^1.0.0",
- "inherits": "^2.0.1",
- "safe-buffer": "^5.1.2"
- }
- },
- "browserify-rsa": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
- "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "randombytes": "^2.0.1"
- }
- },
- "browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
- }
- },
- "browserify-zlib": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
- "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
- "dev": true,
- "requires": {
- "pako": "~1.0.5"
- }
- },
- "browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30000844",
- "electron-to-chromium": "^1.3.47"
- }
- },
- "browserstack": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.1.tgz",
- "integrity": "sha512-O8VMT64P9NOLhuIoD4YngyxBURefaSdR4QdhG8l6HZ9VxtU7jc3m6jLufFwKA5gaf7fetfB2TnRJnMxyob+heg==",
- "dev": true,
- "requires": {
- "https-proxy-agent": "^2.2.1"
- }
- },
- "buffer": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
- "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
- "dev": true,
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dev": true,
- "requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
- },
- "buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "buffer-indexof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
- "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
- "dev": true
- },
- "buffer-xor": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
- "builtin-status-codes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
- "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
- "dev": true
- },
- "builtins": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
- "dev": true
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "dev": true
- },
- "cacache": {
- "version": "10.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
- "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.1",
- "chownr": "^1.0.1",
- "glob": "^7.1.2",
- "graceful-fs": "^4.1.11",
- "lru-cache": "^4.1.1",
- "mississippi": "^2.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.2",
- "ssri": "^5.2.4",
- "unique-filename": "^1.1.0",
- "y18n": "^4.0.0"
- }
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "cache-loader": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz",
- "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "mkdirp": "^0.5.1",
- "neo-async": "^2.5.0",
- "schema-utils": "^0.4.2"
- }
- },
- "callsite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
- "dev": true
- },
- "camel-case": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
- "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
- "dev": true,
- "requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.1.1"
- }
- },
- "camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true,
- "optional": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- }
- }
- },
- "caniuse-lite": {
- "version": "1.0.30000877",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000877.tgz",
- "integrity": "sha512-h04kV/lcuhItU1CZTJOxUEk/9R+1XeJqgc67E+XC8J9TjPM8kzVgOn27ZtRdDUo8O5F8U4QRCzDWJrVym3w3Cg==",
- "dev": true
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
- "center-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
- }
- },
- "chalk": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz",
- "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.1.0",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^4.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
- "dev": true
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "^2.0.0"
- }
- }
- }
- },
- "chokidar": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
- "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
- "dev": true,
- "requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.0",
- "braces": "^2.3.0",
- "fsevents": "^1.2.2",
- "glob-parent": "^3.1.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^4.0.0",
- "lodash.debounce": "^4.0.8",
- "normalize-path": "^2.1.1",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0",
- "upath": "^1.0.5"
- }
- },
- "chownr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
- "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
- "dev": true
- },
- "chrome-trace-event": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz",
- "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==",
- "dev": true
- },
- "cipher-base": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
- "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "circular-dependency-plugin": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz",
- "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "clean-css": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
- "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
- "dev": true,
- "requires": {
- "source-map": "~0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
- "wordwrap": "0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
- "dev": true,
- "optional": true
- }
- }
- },
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
- "dev": true
- },
- "clone-deep": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
- "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
- "dev": true,
- "requires": {
- "for-own": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.0",
- "shallow-clone": "^1.0.0"
- }
- },
- "closest": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/closest/-/closest-0.0.1.tgz",
- "integrity": "sha1-JtpvgLPg4X5x+A8SeCgZ6fZTSVw=",
- "requires": {
- "matches-selector": "0.0.1"
- },
- "dependencies": {
- "matches-selector": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-0.0.1.tgz",
- "integrity": "sha1-HfUmIkOuNBwaCATdMCBIJnrHE7s="
- }
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "codelyzer": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz",
- "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==",
- "dev": true,
- "requires": {
- "app-root-path": "^2.0.1",
- "css-selector-tokenizer": "^0.7.0",
- "cssauron": "^1.4.0",
- "semver-dsl": "^1.0.1",
- "source-map": "^0.5.6",
- "sprintf-js": "^1.0.3"
- }
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
- "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.1"
- }
- },
- "color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
- "dev": true
- },
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
- "dev": true
- },
- "combine-lists": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
- "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
- "dev": true,
- "requires": {
- "lodash": "^4.5.0"
- }
- },
- "combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "2.17.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "compare-versions": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.1.tgz",
- "integrity": "sha512-GkIcfJ9sDt4+gS+RWH3X+kR7ezuKdu3fg2oA9nRA8HZoqZwAKv3ml3TyfB9OyV2iFXxCw7q5XfV6SyPbSCT2pw==",
- "dev": true
- },
- "component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
- "dev": true
- },
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
- "dev": true
- },
- "component-event": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.1.4.tgz",
- "integrity": "sha1-PeePwoeCOBeH4kvyp8U2vwFCybQ="
- },
- "component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
- "dev": true
- },
- "compressible": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
- "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
- "dev": true,
- "requires": {
- "mime-db": ">= 1.34.0 < 2"
- }
- },
- "compression": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
- "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
- "dev": true,
- "requires": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.14",
- "debug": "2.6.9",
- "on-headers": "~1.0.1",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "connect": {
- "version": "3.6.6",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
- "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "finalhandler": "1.1.0",
- "parseurl": "~1.3.2",
- "utils-merge": "1.0.1"
- },
- "dependencies": {
- "finalhandler": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
- "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.1",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.3.1",
- "unpipe": "~1.0.0"
- }
- },
- "statuses": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
- "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
- "dev": true
- }
- }
- },
- "connect-history-api-fallback": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
- "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
- "dev": true
- },
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "dev": true,
- "requires": {
- "date-now": "^0.1.4"
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
- "constants-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
- "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
- "dev": true
- },
- "content-disposition": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
- "dev": true
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
- "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
- "dev": true
- },
- "cookie": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
- "dev": true
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
- "dev": true
- },
- "copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
- },
- "copy-webpack-plugin": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz",
- "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==",
- "dev": true,
- "requires": {
- "cacache": "^10.0.4",
- "find-cache-dir": "^1.0.0",
- "globby": "^7.1.1",
- "is-glob": "^4.0.0",
- "loader-utils": "^1.1.0",
- "minimatch": "^3.0.4",
- "p-limit": "^1.0.0",
- "serialize-javascript": "^1.4.0"
- }
- },
- "core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cosmiconfig": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
- "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
- "dev": true,
- "requires": {
- "is-directory": "^0.3.1",
- "js-yaml": "^3.9.0",
- "parse-json": "^4.0.0",
- "require-from-string": "^2.0.1"
- },
- "dependencies": {
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- }
- }
- },
- "create-ecdh": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
- "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "elliptic": "^6.0.0"
- }
- },
- "create-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
- "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "md5.js": "^1.3.4",
- "ripemd160": "^2.0.1",
- "sha.js": "^2.4.0"
- }
- },
- "create-hmac": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
- "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
- "requires": {
- "cipher-base": "^1.0.3",
- "create-hash": "^1.1.0",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "cross-spawn": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
- "dev": true,
- "optional": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "crypto-browserify": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
- "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
- "requires": {
- "browserify-cipher": "^1.0.0",
- "browserify-sign": "^4.0.0",
- "create-ecdh": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.0",
- "diffie-hellman": "^5.0.0",
- "inherits": "^2.0.1",
- "pbkdf2": "^3.0.3",
- "public-encrypt": "^4.0.0",
- "randombytes": "^2.0.0",
- "randomfill": "^1.0.3"
- }
- },
- "css-parse": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
- "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
- "dev": true
- },
- "css-select": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
- "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
- "dev": true,
- "requires": {
- "boolbase": "~1.0.0",
- "css-what": "2.1",
- "domutils": "1.5.1",
- "nth-check": "~1.0.1"
- }
- },
- "css-selector-tokenizer": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
- "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
- "dev": true,
- "requires": {
- "cssesc": "^0.1.0",
- "fastparse": "^1.1.1",
- "regexpu-core": "^1.0.0"
- }
- },
- "css-what": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
- "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
- "dev": true
- },
- "css.escape": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
- "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
- },
- "cssauron": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
- "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
- "dev": true,
- "requires": {
- "through": "X.X.X"
- }
- },
- "cssesc": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
- "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
- "dev": true
- },
- "cuint": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
- "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
- "custom-event": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
- "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
- "dev": true
- },
- "cyclist": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
- "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
- "dev": true
- },
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "^0.10.9"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
- "dev": true
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
- "deep-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "default-require-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
- "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
- "dev": true,
- "requires": {
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- }
- }
- },
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "del": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
- "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
- "dev": true,
- "requires": {
- "globby": "^6.1.0",
- "is-path-cwd": "^1.0.0",
- "is-path-in-cwd": "^1.0.0",
- "p-map": "^1.1.1",
- "pify": "^3.0.0",
- "rimraf": "^2.2.8"
- },
- "dependencies": {
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- }
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "delegate-events": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/delegate-events/-/delegate-events-1.1.1.tgz",
- "integrity": "sha1-2rSQqcHx1AykDrzSHtr3F7Zx1NQ=",
- "requires": {
- "closest": "*",
- "component-event": "*"
- }
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
- },
- "des.js": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
- "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0"
- }
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
- },
- "detect-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
- "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "detect-node": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
- "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
- "dev": true
- },
- "di": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
- "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
- "dev": true
- },
- "diagram-js": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-2.5.1.tgz",
- "integrity": "sha512-fQ3Dv5gSNCO8pdMUjM42JQO6NRf7HFc7z+BG1T8v6T9aJ4YJENmbKu60tLZEPAmAGiezQeMmmVztWjXwCTyElg==",
- "requires": {
- "css.escape": "^1.5.1",
- "didi": "^4.0.0",
- "hammerjs": "^2.0.1",
- "inherits": "^2.0.1",
- "min-dash": "^3.0.0",
- "min-dom": "^3.0.0",
- "object-refs": "^0.3.0",
- "path-intersection": "^1.0.2",
- "tiny-svg": "^2.0.0"
- }
- },
- "diagram-js-direct-editing": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/diagram-js-direct-editing/-/diagram-js-direct-editing-1.3.0.tgz",
- "integrity": "sha512-oGcb8axfZ2/j9J1binhGNr8zAe3IQyDE0gm3e8crVfC+79ajsKIxe7Hgp5f6FJdCxiKDk0TXCmIMAmaU6Wmc3g==",
- "requires": {
- "min-dash": "^3.0.0",
- "min-dom": "^3.0.0"
- }
- },
- "didi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/didi/-/didi-4.0.0.tgz",
- "integrity": "sha512-AzMElh8mCHOPWPCWfGjoJRla31fMXUT6+287W5ef3IPmtuBcyG9+MkFS7uPP6v3t2Cl086KwWfRB9mESa0OsHQ=="
- },
- "diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true
- },
- "diffie-hellman": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
- "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "miller-rabin": "^4.0.0",
- "randombytes": "^2.0.0"
- }
- },
- "dir-glob": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
- "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "path-type": "^3.0.0"
- }
- },
- "dns-equal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
- "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
- "dev": true
- },
- "dns-packet": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
- "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
- "dev": true,
- "requires": {
- "ip": "^1.1.0",
- "safe-buffer": "^5.0.1"
- }
- },
- "dns-txt": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
- "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
- "dev": true,
- "requires": {
- "buffer-indexof": "^1.0.0"
- }
- },
- "dom-converter": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
- "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
- "dev": true,
- "requires": {
- "utila": "~0.3"
- },
- "dependencies": {
- "utila": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
- "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
- "dev": true
- }
- }
- },
- "dom-serialize": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
- "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
- "dev": true,
- "requires": {
- "custom-event": "~1.0.0",
- "ent": "~2.2.0",
- "extend": "^3.0.0",
- "void-elements": "^2.0.0"
- }
- },
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
- "dev": true,
- "requires": {
- "domelementtype": "~1.1.1",
- "entities": "~1.1.1"
- },
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
- "dev": true
- }
- }
- },
- "domain-browser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
- },
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
- "dev": true
- },
- "domhandler": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
- "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
- "dev": true,
- "requires": {
- "domelementtype": "1"
- }
- },
- "domify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/domify/-/domify-1.4.0.tgz",
- "integrity": "sha1-EUg2F/dk+GlZdbS9x5sU8IA7Yps="
- },
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "dev": true,
- "requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
- "duplexify": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
- "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "optional": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "ejs": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
- "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.3.58",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.58.tgz",
- "integrity": "sha512-AGJxlBEn2wOohxqWZkISVsOjZueKTQljfEODTDSEiMqSpH0S+xzV+/5oEM9AGaqhu7DzrpKOgU7ocQRjj0nJmg==",
- "dev": true
- },
- "elliptic": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
- "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
- "dev": true,
- "requires": {
- "bn.js": "^4.4.0",
- "brorand": "^1.0.1",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.0"
- }
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "dev": true
- },
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "engine.io": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
- "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
- "dev": true,
- "requires": {
- "accepts": "1.3.3",
- "base64id": "1.0.0",
- "cookie": "0.3.1",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "ws": "1.1.2"
- },
- "dependencies": {
- "accepts": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
- "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
- "dev": true,
- "requires": {
- "mime-types": "~2.1.11",
- "negotiator": "0.6.1"
- }
- },
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "engine.io-client": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz",
- "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
- "dev": true,
- "requires": {
- "component-emitter": "1.2.1",
- "component-inherit": "0.0.3",
- "debug": "2.3.3",
- "engine.io-parser": "1.3.2",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parsejson": "0.0.3",
- "parseqs": "0.0.5",
- "parseuri": "0.0.5",
- "ws": "1.1.2",
- "xmlhttprequest-ssl": "1.5.3",
- "yeast": "0.1.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "engine.io-parser": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
- "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
- "dev": true,
- "requires": {
- "after": "0.8.2",
- "arraybuffer.slice": "0.0.6",
- "base64-arraybuffer": "0.1.5",
- "blob": "0.0.4",
- "has-binary": "0.1.7",
- "wtf-8": "1.0.0"
- }
- },
- "enhanced-resolve": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
- "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.4.0",
- "tapable": "^1.0.0"
- }
- },
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
- "dev": true
- },
- "entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
- "dev": true
- },
- "errno": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
- "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
- "dev": true,
- "requires": {
- "prr": "~1.0.1"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
- "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
- "dev": true,
- "requires": {
- "es-to-primitive": "^1.1.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.1",
- "is-callable": "^1.1.3",
- "is-regex": "^1.0.4"
- }
- },
- "es-to-primitive": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
- "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.1",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.1"
- }
- },
- "es5-ext": {
- "version": "0.10.46",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
- "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
- "dev": true,
- "requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.1",
- "next-tick": "1"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-promise": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
- "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
- "dev": true
- },
- "es6-promisify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
- "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
- "dev": true,
- "requires": {
- "es6-promise": "^4.0.3"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "escodegen": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
- "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
- "dev": true,
- "requires": {
- "esprima": "^2.7.1",
- "estraverse": "^1.9.1",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.2.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
- "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "eslint-scope": {
- "version": "3.7.3",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
- "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- },
- "dependencies": {
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
- "esrecurse": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
- "dev": true,
- "requires": {
- "estraverse": "^4.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
- "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true
- },
- "eventemitter3": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
- "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
- "dev": true
- },
- "events": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
- "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
- "dev": true
- },
- "eventsource": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
- "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
- "dev": true,
- "requires": {
- "original": ">=0.0.5"
- }
- },
- "evp_bytestokey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
- "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
- "requires": {
- "md5.js": "^1.3.4",
- "safe-buffer": "^5.1.1"
- }
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
- "dev": true
- },
- "expand-braces": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
- "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
- "dev": true,
- "requires": {
- "array-slice": "^0.2.3",
- "array-unique": "^0.2.1",
- "braces": "^0.1.2"
- },
- "dependencies": {
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "braces": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
- "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
- "dev": true,
- "requires": {
- "expand-range": "^0.1.0"
- }
- },
- "expand-range": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
- "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
- "dev": true,
- "requires": {
- "is-number": "^0.1.1",
- "repeat-string": "^0.2.2"
- }
- },
- "is-number": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
- "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
- "dev": true
- },
- "repeat-string": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
- "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
- "dev": true
- }
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "dev": true,
- "requires": {
- "fill-range": "^2.1.0"
- },
- "dependencies": {
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
- }
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "express": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
- "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
- "dev": true,
- "requires": {
- "accepts": "~1.3.5",
- "array-flatten": "1.1.1",
- "body-parser": "1.18.2",
- "content-disposition": "0.5.2",
- "content-type": "~1.0.4",
- "cookie": "0.3.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.1.1",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.3",
- "qs": "6.5.1",
- "range-parser": "~1.2.0",
- "safe-buffer": "5.1.1",
- "send": "0.16.2",
- "serve-static": "1.13.2",
- "setprototypeof": "1.1.0",
- "statuses": "~1.4.0",
- "type-is": "~1.6.16",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
- "dev": true
- },
- "qs": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
- "dev": true
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "fastparse": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
- "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
- "dev": true
- },
- "faye-websocket": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
- "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
- "dev": true,
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- },
- "file-loader": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
- "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.0.2",
- "schema-utils": "^0.4.5"
- }
- },
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "fileset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
- "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
- "dev": true,
- "requires": {
- "glob": "^7.0.3",
- "minimatch": "^3.0.3"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "finalhandler": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.4.0",
- "unpipe": "~1.0.0"
- }
- },
- "find-cache-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
- "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^1.0.0",
- "pkg-dir": "^2.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "flush-write-stream": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
- "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.4"
- }
- },
- "follow-redirects": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.5.tgz",
- "integrity": "sha512-GHjtHDlY/ehslqv0Gr5N0PUJppgg/q0rOBvX0na1s7y1A3LWxPqCYU76s3Z1bM4+UZB4QF0usaXLT5wFpof5PA==",
- "dev": true,
- "requires": {
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
- "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
- "dev": true
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
- },
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
- "fs-access": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
- "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
- "dev": true,
- "requires": {
- "null-check": "^1.0.0"
- }
- },
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fsevents": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
- "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
- "dev": true,
- "optional": true,
- "requires": {
- "nan": "^2.9.2",
- "node-pre-gyp": "^0.10.0"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "debug": {
- "version": "2.6.9",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "deep-extend": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "glob": {
- "version": "7.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.21",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safer-buffer": "^2.1.0"
- }
- },
- "ignore-walk": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minipass": {
- "version": "2.2.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.2.1"
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "needle": {
- "version": "2.2.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "^2.1.2",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.10.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.1.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.1.10",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.5.1",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.0.5"
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "bundled": true,
- "dev": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "semver": {
- "version": "5.5.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.0.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.2.4",
- "minizlib": "^1.1.0",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.1",
- "yallist": "^3.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true
- },
- "yallist": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true
- }
- }
- },
- "fstream": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
- "dev": true,
- "optional": true,
- "requires": {
- "globule": "^1.0.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
- "dev": true
- },
- "globby": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
- "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "dir-glob": "^2.0.0",
- "glob": "^7.1.2",
- "ignore": "^3.3.5",
- "pify": "^3.0.0",
- "slash": "^1.0.0"
- }
- },
- "globule": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
- "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
- "dev": true
- },
- "hammerjs": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
- "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
- },
- "handle-thing": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
- "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
- "dev": true
- },
- "handlebars": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
- "dev": true,
- "requires": {
- "async": "^1.4.0",
- "optimist": "^0.6.1",
- "source-map": "^0.4.4",
- "uglify-js": "^2.6"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "optional": true,
- "requires": {
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "optional": true
- }
- }
- }
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
- "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
- "dev": true,
- "requires": {
- "ajv": "^5.3.0",
- "har-schema": "^2.0.0"
- },
- "dependencies": {
- "ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
- "dev": true,
- "requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
- }
- }
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "has-binary": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
- "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
- "dev": true,
- "requires": {
- "isarray": "0.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- }
- }
- },
- "has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
- "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
- "dev": true
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "hash.js": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
- "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "hat": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
- "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo="
- },
- "he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
- "dev": true
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dev": true,
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "hosted-git-info": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
- "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
- "dev": true
- },
- "hpack.js": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
- "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "obuf": "^1.0.0",
- "readable-stream": "^2.0.1",
- "wbuf": "^1.1.0"
- }
- },
- "html-entities": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
- "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
- "dev": true
- },
- "html-minifier": {
- "version": "3.5.20",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz",
- "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==",
- "dev": true,
- "requires": {
- "camel-case": "3.0.x",
- "clean-css": "4.2.x",
- "commander": "2.17.x",
- "he": "1.1.x",
- "param-case": "2.1.x",
- "relateurl": "0.2.x",
- "uglify-js": "3.4.x"
- }
- },
- "html-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
- "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
- "dev": true,
- "requires": {
- "html-minifier": "^3.2.3",
- "loader-utils": "^0.2.16",
- "lodash": "^4.17.3",
- "pretty-error": "^2.0.2",
- "tapable": "^1.0.0",
- "toposort": "^1.0.0",
- "util.promisify": "1.0.0"
- },
- "dependencies": {
- "loader-utils": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
- "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
- "dev": true,
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
- }
- }
- }
- },
- "htmlparser2": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
- "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
- "dev": true,
- "requires": {
- "domelementtype": "1",
- "domhandler": "2.1",
- "domutils": "1.1",
- "readable-stream": "1.0"
- },
- "dependencies": {
- "domutils": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
- "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
- "dev": true,
- "requires": {
- "domelementtype": "1"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
- }
- },
- "http-deceiver": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
- "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
- "dev": true
- },
- "http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- }
- },
- "http-parser-js": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
- "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=",
- "dev": true
- },
- "http-proxy": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
- "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
- "dev": true,
- "requires": {
- "eventemitter3": "^3.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- }
- },
- "http-proxy-middleware": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
- "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
- "dev": true,
- "requires": {
- "http-proxy": "^1.16.2",
- "is-glob": "^4.0.0",
- "lodash": "^4.17.5",
- "micromatch": "^3.1.9"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "https-browserify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
- "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
- "dev": true
- },
- "https-proxy-agent": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
- "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
- "dev": true,
- "requires": {
- "agent-base": "^4.1.0",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
- },
- "ids": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/ids/-/ids-0.2.2.tgz",
- "integrity": "sha512-icIO8S7A7Hat9x/59VYjS5uwfBU1xRTDxeFC4t9wNceLxZFm2JbPhO4lC/xhFqFNVaxw2idwpLgUfkVQrjsxIw==",
- "requires": {
- "hat": "^0.0.3"
- }
- },
- "ieee754": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
- "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
- "dev": true
- },
- "iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
- "dev": true
- },
- "ignore": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
- "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
- "dev": true
- },
- "image-size": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
- "dev": true,
- "optional": true
- },
- "immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
- "dev": true
- },
- "import-cwd": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
- "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
- "dev": true,
- "requires": {
- "import-from": "^2.1.0"
- }
- },
- "import-from": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
- "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- }
- },
- "import-local": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
- "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
- "dev": true,
- "requires": {
- "pkg-dir": "^2.0.0",
- "resolve-cwd": "^2.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "in-publish": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
- "dev": true,
- "optional": true
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
- },
- "internal-ip": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
- "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
- "dev": true,
- "requires": {
- "meow": "^3.3.0"
- }
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
- "dev": true
- },
- "ipaddr.js": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
- "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
- "dev": true
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
- "dev": true,
- "requires": {
- "binary-extensions": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "dev": true,
- "requires": {
- "builtin-modules": "^1.0.0"
- }
- },
- "is-callable": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
- "dev": true
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
- "dev": true
- },
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "dev": true,
- "requires": {
- "is-primitive": "^2.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
- },
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-glob": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
- "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
- "dev": true
- },
- "is-path-in-cwd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
- "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
- "dev": true,
- "requires": {
- "is-path-inside": "^1.0.0"
- }
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
- },
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
- "dev": true,
- "requires": {
- "has": "^1.0.1"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "is-symbol": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
- "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isbinaryfile": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
- "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
- "dev": true,
- "requires": {
- "buffer-alloc": "^1.2.0"
- }
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "istanbul": {
- "version": "0.4.5",
- "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
- "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
- "dev": true,
- "requires": {
- "abbrev": "1.0.x",
- "async": "1.x",
- "escodegen": "1.8.x",
- "esprima": "2.7.x",
- "glob": "^5.0.15",
- "handlebars": "^4.0.1",
- "js-yaml": "3.x",
- "mkdirp": "0.5.x",
- "nopt": "3.x",
- "once": "1.x",
- "resolve": "1.1.x",
- "supports-color": "^3.1.0",
- "which": "^1.1.1",
- "wordwrap": "^1.0.0"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "dev": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "istanbul-api": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz",
- "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==",
- "dev": true,
- "requires": {
- "async": "^2.1.4",
- "compare-versions": "^3.1.0",
- "fileset": "^2.0.2",
- "istanbul-lib-coverage": "^1.2.0",
- "istanbul-lib-hook": "^1.2.0",
- "istanbul-lib-instrument": "^1.10.1",
- "istanbul-lib-report": "^1.1.4",
- "istanbul-lib-source-maps": "^1.2.4",
- "istanbul-reports": "^1.3.0",
- "js-yaml": "^3.7.0",
- "mkdirp": "^0.5.1",
- "once": "^1.4.0"
- },
- "dependencies": {
- "async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.10"
- }
- }
- }
- },
- "istanbul-instrumenter-loader": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz",
- "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==",
- "dev": true,
- "requires": {
- "convert-source-map": "^1.5.0",
- "istanbul-lib-instrument": "^1.7.3",
- "loader-utils": "^1.1.0",
- "schema-utils": "^0.3.0"
- },
- "dependencies": {
- "ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
- "dev": true,
- "requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
- }
- },
- "schema-utils": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
- "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
- "dev": true,
- "requires": {
- "ajv": "^5.0.0"
- }
- }
- }
- },
- "istanbul-lib-coverage": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz",
- "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==",
- "dev": true
- },
- "istanbul-lib-hook": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz",
- "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==",
- "dev": true,
- "requires": {
- "append-transform": "^1.0.0"
- }
- },
- "istanbul-lib-instrument": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz",
- "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==",
- "dev": true,
- "requires": {
- "babel-generator": "^6.18.0",
- "babel-template": "^6.16.0",
- "babel-traverse": "^6.18.0",
- "babel-types": "^6.18.0",
- "babylon": "^6.18.0",
- "istanbul-lib-coverage": "^1.2.0",
- "semver": "^5.3.0"
- }
- },
- "istanbul-lib-report": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz",
- "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^1.2.0",
- "mkdirp": "^0.5.1",
- "path-parse": "^1.0.5",
- "supports-color": "^3.1.2"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz",
- "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==",
- "dev": true,
- "requires": {
- "debug": "^3.1.0",
- "istanbul-lib-coverage": "^1.2.0",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.6.1",
- "source-map": "^0.5.3"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "istanbul-reports": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
- "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==",
- "dev": true,
- "requires": {
- "handlebars": "^4.0.3"
- }
- },
- "jasmine": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz",
- "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
- "dev": true,
- "requires": {
- "exit": "^0.1.2",
- "glob": "^7.0.6",
- "jasmine-core": "~2.8.0"
- },
- "dependencies": {
- "jasmine-core": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
- "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
- "dev": true
- }
- }
- },
- "jasmine-core": {
- "version": "2.99.1",
- "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz",
- "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=",
- "dev": true
- },
- "jasmine-diff": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/jasmine-diff/-/jasmine-diff-0.1.3.tgz",
- "integrity": "sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg=",
- "dev": true,
- "requires": {
- "diff": "^3.2.0"
- }
- },
- "jasmine-spec-reporter": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz",
- "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==",
- "dev": true,
- "requires": {
- "colors": "1.1.2"
- }
- },
- "jasminewd2": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz",
- "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
- "dev": true
- },
- "jquery": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
- "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
- },
- "js-base64": {
- "version": "2.4.8",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
- "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q==",
- "dev": true,
- "optional": true
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
- "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- }
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true,
- "optional": true
- },
- "jsesc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "json3": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
- "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "jszip": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
- "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
- "dev": true,
- "requires": {
- "core-js": "~2.3.0",
- "es6-promise": "~3.0.2",
- "lie": "~3.1.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.0.6"
- },
- "dependencies": {
- "core-js": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz",
- "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
- "dev": true
- },
- "es6-promise": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
- "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "~1.0.0",
- "process-nextick-args": "~1.0.6",
- "string_decoder": "~0.10.x",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
- }
- },
- "karma": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz",
- "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==",
- "dev": true,
- "requires": {
- "bluebird": "^3.3.0",
- "body-parser": "^1.16.1",
- "chokidar": "^1.4.1",
- "colors": "^1.1.0",
- "combine-lists": "^1.0.0",
- "connect": "^3.6.0",
- "core-js": "^2.2.0",
- "di": "^0.0.1",
- "dom-serialize": "^2.2.0",
- "expand-braces": "^0.1.1",
- "glob": "^7.1.1",
- "graceful-fs": "^4.1.2",
- "http-proxy": "^1.13.0",
- "isbinaryfile": "^3.0.0",
- "lodash": "^3.8.0",
- "log4js": "^0.6.31",
- "mime": "^1.3.4",
- "minimatch": "^3.0.2",
- "optimist": "^0.6.1",
- "qjobs": "^1.1.4",
- "range-parser": "^1.2.0",
- "rimraf": "^2.6.0",
- "safe-buffer": "^5.0.1",
- "socket.io": "1.7.3",
- "source-map": "^0.5.3",
- "tmp": "0.0.31",
- "useragent": "^2.1.12"
- },
- "dependencies": {
- "anymatch": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
- "dev": true,
- "requires": {
- "micromatch": "^2.1.5",
- "normalize-path": "^2.0.0"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.0.1"
- }
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
- }
- },
- "chokidar": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
- "dev": true,
- "requires": {
- "anymatch": "^1.3.0",
- "async-each": "^1.0.0",
- "fsevents": "^1.0.0",
- "glob-parent": "^2.0.0",
- "inherits": "^2.0.1",
- "is-binary-path": "^1.0.0",
- "is-glob": "^2.0.0",
- "path-is-absolute": "^1.0.0",
- "readdirp": "^2.0.0"
- }
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "^0.1.0"
- }
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
- }
- }
- }
- },
- "karma-chrome-launcher": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
- "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
- "dev": true,
- "requires": {
- "fs-access": "^1.0.0",
- "which": "^1.2.1"
- }
- },
- "karma-coverage-istanbul-reporter": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.1.tgz",
- "integrity": "sha512-UcgrHkFehI5+ivMouD8NH/UOHiX4oCAtwaANylzPFdcAuD52fnCUuelacq2gh8tZ4ydhU3+xiXofSq7j5Ehygw==",
- "dev": true,
- "requires": {
- "istanbul-api": "^1.3.1",
- "minimatch": "^3.0.4"
- }
- },
- "karma-jasmine": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
- "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
- "dev": true
- },
- "karma-jasmine-html-reporter": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz",
- "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=",
- "dev": true,
- "requires": {
- "karma-jasmine": "^1.0.2"
- }
- },
- "karma-source-map-support": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz",
- "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==",
- "dev": true,
- "requires": {
- "source-map-support": "^0.5.5"
- }
- },
- "killable": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz",
- "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true,
- "optional": true
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "leb": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz",
- "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=",
- "dev": true
- },
- "less": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz",
- "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==",
- "dev": true,
- "requires": {
- "clone": "^2.1.2",
- "errno": "^0.1.1",
- "graceful-fs": "^4.1.2",
- "image-size": "~0.5.0",
- "mime": "^1.4.1",
- "mkdirp": "^0.5.0",
- "promise": "^7.1.1",
- "request": "^2.83.0",
- "source-map": "~0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "optional": true
- }
- }
- },
- "less-loader": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz",
- "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==",
- "dev": true,
- "requires": {
- "clone": "^2.1.1",
- "loader-utils": "^1.1.0",
- "pify": "^3.0.0"
- }
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "license-webpack-plugin": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.4.0.tgz",
- "integrity": "sha512-iwuNFMWbXS76WiQXJBTs8/7Tby4NQnY8AIkBMuJG5El79UT8zWrJQMfpW+KRXt4Y2Bs5uk+Myg/MO7ROSF8jzA==",
- "dev": true,
- "requires": {
- "ejs": "^2.5.7"
- }
- },
- "lie": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
- "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
- "dev": true,
- "requires": {
- "immediate": "~3.0.5"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "loader-runner": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
- "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
- "dev": true
- },
- "loader-utils": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
- "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
- "dev": true,
- "requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lodash": {
- "version": "4.17.10",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
- "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
- "dev": true
- },
- "lodash.assign": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
- "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
- "dev": true,
- "optional": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
- "dev": true
- },
- "lodash.mergewith": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
- "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
- "dev": true,
- "optional": true
- },
- "lodash.tail": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
- "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
- "dev": true
- },
- "log-symbols": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
- "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.1"
- }
- },
- "log4js": {
- "version": "0.6.38",
- "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
- "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
- "dev": true,
- "requires": {
- "readable-stream": "~1.0.2",
- "semver": "~4.3.3"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "semver": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
- "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
- "dev": true
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
- "dev": true
- }
- }
- },
- "loglevel": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
- "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
- "dev": true
- },
- "loglevelnext": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz",
- "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==",
- "dev": true,
- "requires": {
- "es6-symbol": "^3.1.1",
- "object.assign": "^4.1.0"
- }
- },
- "long": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
- "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=",
- "dev": true
- },
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
- "dev": true
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
- "lower-case": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
- "dev": true
- },
- "lru-cache": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
- "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "make-error": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz",
- "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
- "dev": true
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "matches-selector": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-1.2.0.tgz",
- "integrity": "sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA=="
- },
- "math-random": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
- "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
- "dev": true
- },
- "md5.js": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
- "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
- },
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "memory-fs": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
- "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
- "dev": true,
- "requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
- }
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
- "dev": true
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true
- },
- "mime-db": {
- "version": "1.35.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
- "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.19",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
- "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
- "dev": true,
- "requires": {
- "mime-db": "~1.35.0"
- }
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- },
- "min-dash": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.1.0.tgz",
- "integrity": "sha512-nP58UY9iKd+b6CYivW85+aqgjMXPMd3UAfv5CExiZ8uQBO4LxbY/BWf4rzRjMNtKI9QW21LH80i77mG2Jh96bg=="
- },
- "min-dom": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/min-dom/-/min-dom-3.1.1.tgz",
- "integrity": "sha512-qvURYMN2jHw9kPg1oFKdOd/VNJOsUNGV5H5j+zpJLkFVyP49tqmTQN8xWMYCDpIKetyQAC6jV5JjskNZr+JHpg==",
- "requires": {
- "closest": "0.0.1",
- "component-event": "^0.1.4",
- "delegate-events": "^1.1.1",
- "domify": "^1.3.1",
- "indexof": "0.0.1",
- "matches-selector": "^1.2.0"
- }
- },
- "mini-css-extract-plugin": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz",
- "integrity": "sha512-XWuB3G61Rtasq/gLe7cp5cuozehE6hN+E4sxCamRR/WDiHTg+f7ZIAS024r8UJQffY+e2gGELXQZgQoFDfNDCg==",
- "dev": true,
- "requires": {
- "@webpack-contrib/schema-utils": "^1.0.0-beta.0",
- "loader-utils": "^1.1.0",
- "webpack-sources": "^1.1.0"
- }
- },
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- },
- "mississippi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
- "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
- "dev": true,
- "requires": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^2.0.1",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
- }
- },
- "mixin-deep": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
- "mixin-object": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
- "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
- "dev": true,
- "requires": {
- "for-in": "^0.1.3",
- "is-extendable": "^0.1.1"
- },
- "dependencies": {
- "for-in": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
- "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
- "dev": true
- }
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "moddle": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/moddle/-/moddle-4.1.0.tgz",
- "integrity": "sha512-asBaDLTTNpv4oC8iFdwonfMf/noPVvaBDXoSL7AsXZUDqwokgy8Lsf5eXwdnjXiDqm0olYi/S3Do544uVJSQDg==",
- "requires": {
- "min-dash": "^3.0.0"
- }
- },
- "moddle-xml": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-7.2.3.tgz",
- "integrity": "sha512-QfiEJr2rnasdb7CZrKcycAgkT4c1cPR+73dwbaIgU8lx/MXzXywbG+HC+nVXae/M2rUeyTN45puBYMpLcVOdPQ==",
- "requires": {
- "min-dash": "^3.0.0",
- "moddle": "^4.1.0",
- "saxen": "^8.0.0",
- "tiny-stack": "^1.0.0"
- }
- },
- "move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "multicast-dns": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
- "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
- "dev": true,
- "requires": {
- "dns-packet": "^1.3.1",
- "thunky": "^1.0.2"
- }
- },
- "multicast-dns-service-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
- "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
- "dev": true
- },
- "nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
- "dev": true,
- "optional": true
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
- "dev": true
- },
- "neo-async": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz",
- "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==",
- "dev": true
- },
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
- "dev": true
- },
- "ngx-spinner": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-6.1.2.tgz",
- "integrity": "sha512-j/R8T5vKvsLLib1pTxKLYK3GYAFXw5VoUJmaTlcocO6Yi4qIypfhmw9PX9triy7hWVGPu6cUzVs7g9cEG9OYBA==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "no-case": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
- "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
- "dev": true,
- "requires": {
- "lower-case": "^1.1.1"
- }
- },
- "node-forge": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
- "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
- "dev": true
- },
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "dev": true,
- "optional": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- },
- "dependencies": {
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true,
- "optional": true
- }
- }
- },
- "node-libs-browser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
- "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
- "dev": true,
- "requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^1.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.0",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.10.3",
- "vm-browserify": "0.0.4"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "node-sass": {
- "version": "4.9.3",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz",
- "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==",
- "dev": true,
- "optional": true,
- "requires": {
- "async-foreach": "^0.1.3",
- "chalk": "^1.1.1",
- "cross-spawn": "^3.0.0",
- "gaze": "^1.0.0",
- "get-stdin": "^4.0.1",
- "glob": "^7.0.3",
- "in-publish": "^2.0.0",
- "lodash.assign": "^4.2.0",
- "lodash.clonedeep": "^4.3.2",
- "lodash.mergewith": "^4.6.0",
- "meow": "^3.7.0",
- "mkdirp": "^0.5.1",
- "nan": "^2.10.0",
- "node-gyp": "^3.8.0",
- "npmlog": "^4.0.0",
- "request": "2.87.0",
- "sass-graph": "^2.2.4",
- "stdout-stream": "^1.4.0",
- "true-case-path": "^1.0.2"
- },
- "dependencies": {
- "ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
- "dev": true,
- "optional": true,
- "requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
- }
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true,
- "optional": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
- "dev": true,
- "optional": true,
- "requires": {
- "ajv": "^5.1.0",
- "har-schema": "^2.0.0"
- }
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
- "dev": true,
- "optional": true
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true,
- "optional": true
- },
- "request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
- "dev": true,
- "optional": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.6.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.5",
- "extend": "~3.0.1",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.1",
- "har-validator": "~5.0.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.17",
- "oauth-sign": "~0.8.2",
- "performance-now": "^2.1.0",
- "qs": "~6.5.1",
- "safe-buffer": "^5.1.1",
- "tough-cookie": "~2.3.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.1.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true,
- "optional": true
- },
- "tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
- "dev": true,
- "optional": true,
- "requires": {
- "punycode": "^1.4.1"
- }
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- },
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
- "dev": true
- },
- "npm-package-arg": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz",
- "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.6.0",
- "osenv": "^0.1.5",
- "semver": "^5.5.0",
- "validate-npm-package-name": "^3.0.0"
- }
- },
- "npm-registry-client": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz",
- "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==",
- "dev": true,
- "requires": {
- "concat-stream": "^1.5.2",
- "graceful-fs": "^4.1.6",
- "normalize-package-data": "~1.0.1 || ^2.0.0",
- "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
- "npmlog": "2 || ^3.1.0 || ^4.0.0",
- "once": "^1.3.3",
- "request": "^2.74.0",
- "retry": "^0.10.0",
- "safe-buffer": "^5.1.1",
- "semver": "2 >=2.2.1 || 3.x || 4 || 5",
- "slide": "^1.1.3",
- "ssri": "^5.2.4"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "nth-check": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
- "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
- "dev": true,
- "requires": {
- "boolbase": "~1.0.0"
- }
- },
- "null-check": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
- "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
- "dev": true
- },
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
- "dev": true
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object-component": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
- "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-keys": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
- "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
- "dev": true
- },
- "object-refs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/object-refs/-/object-refs-0.3.0.tgz",
- "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ=="
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
- }
- },
- "object.getownpropertydescriptors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
- "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
- }
- },
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
- },
- "dependencies": {
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- }
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "obuf": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
- "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
- "dev": true
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "opn": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
- "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
- "dev": true,
- "requires": {
- "is-wsl": "^1.1.0"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
- "dev": true,
- "requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- }
- }
- },
- "optionator": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
- "dev": true,
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
- }
- },
- "options": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
- "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
- "dev": true
- },
- "original": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
- "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
- "dev": true,
- "requires": {
- "url-parse": "^1.4.3"
- }
- },
- "os-browserify": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
- "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
- "dev": true
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "optional": true,
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-map": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
- "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
- "dev": true
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "pako": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
- "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
- "dev": true
- },
- "parallel-transform": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
- "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
- "dev": true,
- "requires": {
- "cyclist": "~0.2.2",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
- }
- },
- "param-case": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
- "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
- "dev": true,
- "requires": {
- "no-case": "^2.2.0"
- }
- },
- "parse-asn1": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
- "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
- "dev": true,
- "requires": {
- "asn1.js": "^4.0.0",
- "browserify-aes": "^1.0.0",
- "create-hash": "^1.1.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3"
- }
- },
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
- },
- "dependencies": {
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "^1.0.0"
- }
- }
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "parse5": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
- "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
- "dev": true
- },
- "parsejson": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
- "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
- "dev": true,
- "requires": {
- "better-assert": "~1.0.0"
- }
- },
- "parseqs": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
- "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
- "dev": true,
- "requires": {
- "better-assert": "~1.0.0"
- }
- },
- "parseuri": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
- "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
- "dev": true,
- "requires": {
- "better-assert": "~1.0.0"
- }
- },
- "parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
- "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-intersection": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/path-intersection/-/path-intersection-1.1.1.tgz",
- "integrity": "sha512-EdeUuXCm0+tb/2gv8PmRhd9fYYOtbDeTYkwCnzkBuAEjevEZi2mWUi1DVFF5nqSObYsxKcchvKUhnRULWOFreQ=="
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pbkdf2": {
- "version": "3.0.16",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
- "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
- "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
- "dev": true,
- "requires": {
- "find-up": "^2.1.0"
- }
- },
- "portfinder": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz",
- "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==",
- "dev": true,
- "requires": {
- "async": "^1.5.2",
- "debug": "^2.2.0",
- "mkdirp": "0.5.x"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "postcss": {
- "version": "6.0.23",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
- "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "source-map": "^0.6.1",
- "supports-color": "^5.4.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "postcss-import": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz",
- "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==",
- "dev": true,
- "requires": {
- "postcss": "^6.0.1",
- "postcss-value-parser": "^3.2.3",
- "read-cache": "^1.0.0",
- "resolve": "^1.1.7"
- }
- },
- "postcss-load-config": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz",
- "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==",
- "dev": true,
- "requires": {
- "cosmiconfig": "^4.0.0",
- "import-cwd": "^2.0.0"
- }
- },
- "postcss-loader": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz",
- "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "postcss": "^6.0.0",
- "postcss-load-config": "^2.0.0",
- "schema-utils": "^0.4.0"
- }
- },
- "postcss-url": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz",
- "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==",
- "dev": true,
- "requires": {
- "mime": "^1.4.1",
- "minimatch": "^3.0.4",
- "mkdirp": "^0.5.0",
- "postcss": "^6.0.1",
- "xxhashjs": "^0.2.1"
- }
- },
- "postcss-value-parser": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
- "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
- "pretty-error": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
- "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
- "dev": true,
- "requires": {
- "renderkid": "^2.0.1",
- "utila": "~0.4"
- }
- },
- "process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "dev": true,
- "optional": true,
- "requires": {
- "asap": "~2.0.3"
- }
- },
- "promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
- "dev": true
- },
- "protractor": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz",
- "integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==",
- "dev": true,
- "requires": {
- "@types/node": "^6.0.46",
- "@types/q": "^0.0.32",
- "@types/selenium-webdriver": "^3.0.0",
- "blocking-proxy": "^1.0.0",
- "browserstack": "^1.5.1",
- "chalk": "^1.1.3",
- "glob": "^7.0.3",
- "jasmine": "2.8.0",
- "jasminewd2": "^2.1.0",
- "optimist": "~0.6.0",
- "q": "1.4.1",
- "saucelabs": "^1.5.0",
- "selenium-webdriver": "3.6.0",
- "source-map-support": "~0.4.0",
- "webdriver-js-extender": "2.0.0",
- "webdriver-manager": "^12.0.6"
- },
- "dependencies": {
- "@types/node": {
- "version": "6.0.116",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.116.tgz",
- "integrity": "sha512-vToa8YEeulfyYg1gSOeHjvvIRqrokng62VMSj2hoZrwZNcYrp2h3AWo6KeBVuymIklQUaY5zgVJvVsC4KiiLkQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "del": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
- "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
- "dev": true,
- "requires": {
- "globby": "^5.0.0",
- "is-path-cwd": "^1.0.0",
- "is-path-in-cwd": "^1.0.0",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "rimraf": "^2.2.8"
- }
- },
- "globby": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
- "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
- "dev": true,
- "requires": {
- "array-union": "^1.0.1",
- "arrify": "^1.0.0",
- "glob": "^7.0.3",
- "object-assign": "^4.0.1",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
- "dev": true,
- "requires": {
- "source-map": "^0.5.6"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "webdriver-manager": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz",
- "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==",
- "dev": true,
- "requires": {
- "adm-zip": "^0.4.9",
- "chalk": "^1.1.1",
- "del": "^2.2.0",
- "glob": "^7.0.3",
- "ini": "^1.3.4",
- "minimist": "^1.2.0",
- "q": "^1.4.1",
- "request": "^2.87.0",
- "rimraf": "^2.5.2",
- "semver": "^5.3.0",
- "xml2js": "^0.4.17"
- }
- }
- }
- },
- "proxy-addr": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
- "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
- "dev": true,
- "requires": {
- "forwarded": "~0.1.2",
- "ipaddr.js": "1.8.0"
- }
- },
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.1.29",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
- "dev": true
- },
- "public-encrypt": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
- "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.0",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "parse-asn1": "^5.0.0",
- "randombytes": "^2.0.1"
- }
- },
- "pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
- },
- "q": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
- "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
- "dev": true
- },
- "qjobs": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
- "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
- "dev": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- },
- "querystring": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
- "dev": true
- },
- "querystring-es3": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
- "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
- "dev": true
- },
- "querystringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
- "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
- "dev": true
- },
- "randomatic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
- "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
- "dev": true,
- "requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- }
- }
- },
- "randombytes": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
- "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "randomfill": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
- "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.0.5",
- "safe-buffer": "^5.1.0"
- }
- },
- "range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "dev": true
- },
- "raw-body": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
- "dev": true,
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
- "dev": true
- },
- "http-errors": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "dev": true,
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": ">= 1.3.1 < 2"
- }
- },
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
- "dev": true
- }
- }
- },
- "raw-loader": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
- "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
- "dev": true
- },
- "read-cache": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
- "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
- "dev": true,
- "requires": {
- "pify": "^2.3.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "readdirp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
- "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "minimatch": "^3.0.2",
- "readable-stream": "^2.0.2",
- "set-immediate-shim": "^1.0.1"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- }
- },
- "reflect-metadata": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz",
- "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==",
- "dev": true
- },
- "regenerate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- },
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "dev": true,
- "requires": {
- "is-equal-shallow": "^0.1.3"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "regexpu-core": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
- "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
- "dev": true,
- "requires": {
- "regenerate": "^1.2.1",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.4"
- }
- },
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- }
- }
- },
- "relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
- "dev": true
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "renderkid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz",
- "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
- "dev": true,
- "requires": {
- "css-select": "^1.1.0",
- "dom-converter": "~0.1",
- "htmlparser2": "~3.3.0",
- "strip-ansi": "^3.0.0",
- "utila": "~0.3"
- },
- "dependencies": {
- "utila": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
- "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
- "dev": true
- }
- }
- },
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
- "dev": true
- },
- "resolve": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.5"
- }
- },
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- }
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "retry": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
- "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
- "dev": true
- },
- "right-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "^0.1.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "dev": true,
- "requires": {
- "glob": "^7.0.5"
- }
- },
- "ripemd160": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
- "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
- "requires": {
- "hash-base": "^3.0.0",
- "inherits": "^2.0.1"
- }
- },
- "run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1"
- }
- },
- "rxjs": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
- "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
- "requires": {
- "tslib": "^1.9.0"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "sass-graph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
- "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.0.0",
- "lodash": "^4.0.0",
- "scss-tokenizer": "^0.2.3",
- "yargs": "^7.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "optional": true
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
- "dev": true,
- "optional": true
- },
- "yargs": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
- "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.0"
- }
- }
- }
- },
- "sass-loader": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz",
- "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
- "dev": true,
- "requires": {
- "clone-deep": "^2.0.1",
- "loader-utils": "^1.0.1",
- "lodash.tail": "^4.1.1",
- "neo-async": "^2.5.0",
- "pify": "^3.0.0",
- "semver": "^5.5.0"
- }
- },
- "saucelabs": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
- "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
- "dev": true,
- "requires": {
- "https-proxy-agent": "^2.2.1"
- }
- },
- "sax": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
- "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
- "dev": true
- },
- "saxen": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.0.0.tgz",
- "integrity": "sha512-Iap4vpmKbRXrEaRcP1hYQey8bmLlhKzndAoJ6Gub8+LH2cy0CyrSLnOmSvd6TXRefS2oCxIdz0Y9/bgl1YTRoQ=="
- },
- "schema-utils": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
- "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0"
- }
- },
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
- "dev": true,
- "optional": true,
- "requires": {
- "js-base64": "^2.1.8",
- "source-map": "^0.4.2"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "optional": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "select-hose": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
- "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
- "dev": true
- },
- "selenium-webdriver": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz",
- "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
- "dev": true,
- "requires": {
- "jszip": "^3.1.3",
- "rimraf": "^2.5.4",
- "tmp": "0.0.30",
- "xml2js": "^0.4.17"
- },
- "dependencies": {
- "tmp": {
- "version": "0.0.30",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
- "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.1"
- }
- }
- }
- },
- "selfsigned": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz",
- "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==",
- "dev": true,
- "requires": {
- "node-forge": "0.7.5"
- }
- },
- "semver": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
- "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
- "dev": true
- },
- "semver-dsl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
- "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
- "dev": true,
- "requires": {
- "semver": "^5.3.0"
- }
- },
- "semver-intersect": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz",
- "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==",
- "dev": true,
- "requires": {
- "semver": "^5.0.0"
- }
- },
- "send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
- },
- "dependencies": {
- "mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true
- }
- }
- },
- "serialize-javascript": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
- "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
- "dev": true
- },
- "serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
- "dev": true,
- "requires": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- }
- },
- "serve-static": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
- "dev": true,
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.2"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "set-immediate-shim": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
- "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
- "dev": true
- },
- "set-value": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
- "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
- "dev": true
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- },
- "sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "shallow-clone": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
- "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.1",
- "kind-of": "^5.0.0",
- "mixin-object": "^2.0.1"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
- "silent-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz",
- "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=",
- "dev": true,
- "requires": {
- "debug": "^2.2.0"
- }
- },
- "slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
- "dev": true
- },
- "slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "socket.io": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz",
- "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
- "dev": true,
- "requires": {
- "debug": "2.3.3",
- "engine.io": "1.8.3",
- "has-binary": "0.1.7",
- "object-assign": "4.1.0",
- "socket.io-adapter": "0.5.0",
- "socket.io-client": "1.7.3",
- "socket.io-parser": "2.3.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
- "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
- "dev": true
- }
- }
- },
- "socket.io-adapter": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
- "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
- "dev": true,
- "requires": {
- "debug": "2.3.3",
- "socket.io-parser": "2.3.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "socket.io-client": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz",
- "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
- "dev": true,
- "requires": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "1.2.1",
- "debug": "2.3.3",
- "engine.io-client": "1.8.3",
- "has-binary": "0.1.7",
- "indexof": "0.0.1",
- "object-component": "0.0.3",
- "parseuri": "0.0.5",
- "socket.io-parser": "2.3.1",
- "to-array": "0.1.4"
- },
- "dependencies": {
- "debug": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
- "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
- "dev": true,
- "requires": {
- "ms": "0.7.2"
- }
- },
- "ms": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
- "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
- "dev": true
- }
- }
- },
- "socket.io-parser": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
- "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
- "dev": true,
- "requires": {
- "component-emitter": "1.1.2",
- "debug": "2.2.0",
- "isarray": "0.0.1",
- "json3": "3.3.2"
- },
- "dependencies": {
- "component-emitter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
- "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
- "dev": true
- },
- "debug": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
- "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
- "dev": true,
- "requires": {
- "ms": "0.7.1"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
- "dev": true
- },
- "ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
- "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
- "dev": true
- }
- }
- },
- "sockjs": {
- "version": "0.3.19",
- "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
- "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
- "dev": true,
- "requires": {
- "faye-websocket": "^0.10.0",
- "uuid": "^3.0.1"
- }
- },
- "sockjs-client": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
- "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
- "dev": true,
- "requires": {
- "debug": "^2.6.6",
- "eventsource": "0.1.6",
- "faye-websocket": "~0.11.0",
- "inherits": "^2.0.1",
- "json3": "^3.3.2",
- "url-parse": "^1.1.8"
- },
- "dependencies": {
- "faye-websocket": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
- "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
- "dev": true,
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- }
- }
- },
- "source-list-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
- "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-support": {
- "version": "0.5.8",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz",
- "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
- "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
- "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
- "dev": true
- },
- "spdy": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
- "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
- "dev": true,
- "requires": {
- "debug": "^2.6.8",
- "handle-thing": "^1.2.5",
- "http-deceiver": "^1.2.7",
- "safe-buffer": "^5.0.1",
- "select-hose": "^2.0.0",
- "spdy-transport": "^2.0.18"
- }
- },
- "spdy-transport": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
- "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
- "dev": true,
- "requires": {
- "debug": "^2.6.8",
- "detect-node": "^2.0.3",
- "hpack.js": "^2.1.6",
- "obuf": "^1.1.1",
- "readable-stream": "^2.2.9",
- "safe-buffer": "^5.0.1",
- "wbuf": "^1.7.2"
- }
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sshpk": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
- "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "ssri": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
- "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.1"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
- "stats-webpack-plugin": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz",
- "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=",
- "dev": true,
- "requires": {
- "lodash": "^4.17.4"
- }
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
- "dev": true
- },
- "stdout-stream": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
- "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
- "dev": true,
- "optional": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
- "stream-browserify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
- "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
- }
- },
- "stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
- }
- },
- "stream-http": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
- "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
- "dev": true,
- "requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
- "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
- "dev": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- }
- },
- "style-loader": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz",
- "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "schema-utils": "^0.4.5"
- }
- },
- "stylus": {
- "version": "0.54.5",
- "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
- "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
- "dev": true,
- "requires": {
- "css-parse": "1.7.x",
- "debug": "*",
- "glob": "7.0.x",
- "mkdirp": "0.5.x",
- "sax": "0.5.x",
- "source-map": "0.1.x"
- },
- "dependencies": {
- "glob": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
- "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "source-map": {
- "version": "0.1.43",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
- "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "stylus-loader": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
- "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.0.2",
- "lodash.clonedeep": "^4.5.0",
- "when": "~3.6.x"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "symbol-observable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
- "dev": true
- },
- "tapable": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz",
- "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==",
- "dev": true
- },
- "tar": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
- "dev": true,
- "optional": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.2",
- "inherits": "2"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "through2": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
- "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.1.5",
- "xtend": "~4.0.1"
- }
- },
- "thunky": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz",
- "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=",
- "dev": true
- },
- "timers-browserify": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
- "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
- "dev": true,
- "requires": {
- "setimmediate": "^1.0.4"
- }
- },
- "tiny-stack": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/tiny-stack/-/tiny-stack-1.1.0.tgz",
- "integrity": "sha512-m1ts/1HFpURDZolQ7xsRgZTP75zb98wN/K/l/ZCYWFsac4ozAJyg0ENcgVcKG3qzBfL2k1PTXd3mMbkUdcgg+g=="
- },
- "tiny-svg": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.1.2.tgz",
- "integrity": "sha512-w7rbwwnAKoB92jsXYE+yzFGwHx3OInYyNXUAhpnYM7t7iA2EWAdRC+54yEb9wZlo+zrmLeWvyJCsdZdzbEF8Bg=="
- },
- "tmp": {
- "version": "0.0.31",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
- "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.1"
- }
- },
- "to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
- "dev": true
- },
- "to-arraybuffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
- "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
- "dev": true
- },
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "toastr": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz",
- "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=",
- "requires": {
- "jquery": ">=1.12.0"
- }
- },
- "toposort": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
- "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
- "dev": true
- },
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dev": true,
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "tree-kill": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
- "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
- "dev": true
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
- "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^6.0.4"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "optional": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
- }
- },
- "ts-node": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz",
- "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.0",
- "chalk": "^2.3.0",
- "diff": "^3.1.0",
- "make-error": "^1.1.1",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "source-map-support": "^0.5.3",
- "yn": "^2.0.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "tsickle": {
- "version": "0.32.1",
- "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz",
- "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==",
- "dev": true,
- "requires": {
- "jasmine-diff": "^0.1.3",
- "minimist": "^1.2.0",
- "mkdirp": "^0.5.1",
- "source-map": "^0.6.0",
- "source-map-support": "^0.5.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "tslib": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
- "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
- },
- "tslint": {
- "version": "5.9.1",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz",
- "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=",
- "dev": true,
- "requires": {
- "babel-code-frame": "^6.22.0",
- "builtin-modules": "^1.1.1",
- "chalk": "^2.3.0",
- "commander": "^2.12.1",
- "diff": "^3.2.0",
- "glob": "^7.1.1",
- "js-yaml": "^3.7.0",
- "minimatch": "^3.0.4",
- "resolve": "^1.3.2",
- "semver": "^5.3.0",
- "tslib": "^1.8.0",
- "tsutils": "^2.12.1"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- }
- }
- },
- "tsutils": {
- "version": "2.29.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
- "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "tty-browserify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
- "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true,
- "optional": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- },
- "type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
- "dev": true,
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.18"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "typescript": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz",
- "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==",
- "dev": true
- },
- "uglify-js": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz",
- "integrity": "sha512-J0M2i1mQA+ze3EdN9SBi751DNdAXmeFLfJrd/MDIkRc3G3Gbb9OPVSx7GIQvVwfWxQARcYV2DTxIkMyDAk3o9Q==",
- "dev": true,
- "requires": {
- "commander": "~2.16.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
- "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
- "dev": true,
- "optional": true
- },
- "uglifyjs-webpack-plugin": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz",
- "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==",
- "dev": true,
- "requires": {
- "cacache": "^10.0.4",
- "find-cache-dir": "^1.0.0",
- "schema-utils": "^0.4.5",
- "serialize-javascript": "^1.4.0",
- "source-map": "^0.6.1",
- "uglify-es": "^3.3.4",
- "webpack-sources": "^1.1.0",
- "worker-farm": "^1.5.2"
- },
- "dependencies": {
- "commander": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
- "dev": true
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "uglify-es": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
- "dev": true,
- "requires": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
- }
- }
- }
- },
- "ultron": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
- "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
- "dev": true
- },
- "union-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
- "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^0.4.3"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "set-value": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
- "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.1",
- "to-object-path": "^0.3.0"
- }
- }
- }
- },
- "unique-filename": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
- "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
- "dev": true,
- "requires": {
- "unique-slug": "^2.0.0"
- }
- },
- "unique-slug": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
- "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- }
- }
- },
- "upath": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
- "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
- "dev": true
- },
- "upper-case": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
- "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
- "dev": true
- },
- "uri-js": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
- "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
- "url": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
- "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
- "dev": true,
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
- "dev": true
- }
- }
- },
- "url-join": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
- "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
- "dev": true
- },
- "url-loader": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz",
- "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.1.0",
- "mime": "^2.0.3",
- "schema-utils": "^1.0.0"
- },
- "dependencies": {
- "mime": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
- "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
- "dev": true
- },
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
- }
- }
- },
- "url-parse": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
- "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
- "dev": true,
- "requires": {
- "querystringify": "^2.0.0",
- "requires-port": "^1.0.0"
- }
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "useragent": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
- "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
- "dev": true,
- "requires": {
- "lru-cache": "4.1.x",
- "tmp": "0.0.x"
- }
- },
- "util": {
- "version": "0.10.4",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
- "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
- "dev": true,
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "utila": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
- "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
- "dev": true
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "dev": true
- },
- "uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "validate-npm-package-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
- "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
- "dev": true,
- "requires": {
- "builtins": "^1.0.3"
- }
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "dev": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "vm-browserify": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
- "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
- "dev": true,
- "requires": {
- "indexof": "0.0.1"
- }
- },
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
- "dev": true
- },
- "watchpack": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
- "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
- "dev": true,
- "requires": {
- "chokidar": "^2.0.2",
- "graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
- }
- },
- "wbuf": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
- "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
- "dev": true,
- "requires": {
- "minimalistic-assert": "^1.0.0"
- }
- },
- "webassemblyjs": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz",
- "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/validation": "1.4.3",
- "@webassemblyjs/wasm-parser": "1.4.3",
- "@webassemblyjs/wast-parser": "1.4.3",
- "long": "^3.2.0"
- }
- },
- "webdriver-js-extender": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz",
- "integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==",
- "dev": true,
- "requires": {
- "@types/selenium-webdriver": "^3.0.0",
- "selenium-webdriver": "^3.0.1"
- }
- },
- "webpack": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz",
- "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.4.3",
- "@webassemblyjs/wasm-edit": "1.4.3",
- "@webassemblyjs/wasm-parser": "1.4.3",
- "acorn": "^5.0.0",
- "acorn-dynamic-import": "^3.0.0",
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0",
- "chrome-trace-event": "^0.1.1",
- "enhanced-resolve": "^4.0.0",
- "eslint-scope": "^3.7.1",
- "loader-runner": "^2.3.0",
- "loader-utils": "^1.1.0",
- "memory-fs": "~0.4.1",
- "micromatch": "^3.1.8",
- "mkdirp": "~0.5.0",
- "neo-async": "^2.5.0",
- "node-libs-browser": "^2.0.0",
- "schema-utils": "^0.4.4",
- "tapable": "^1.0.0",
- "uglifyjs-webpack-plugin": "^1.2.4",
- "watchpack": "^1.5.0",
- "webpack-sources": "^1.0.1"
- }
- },
- "webpack-core": {
- "version": "0.6.9",
- "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
- "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
- "dev": true,
- "requires": {
- "source-list-map": "~0.1.7",
- "source-map": "~0.4.1"
- },
- "dependencies": {
- "source-list-map": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
- "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
- "dev": true
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
- }
- },
- "webpack-dev-middleware": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz",
- "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==",
- "dev": true,
- "requires": {
- "loud-rejection": "^1.6.0",
- "memory-fs": "~0.4.1",
- "mime": "^2.1.0",
- "path-is-absolute": "^1.0.0",
- "range-parser": "^1.0.3",
- "url-join": "^4.0.0",
- "webpack-log": "^1.0.1"
- },
- "dependencies": {
- "mime": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
- "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
- "dev": true
- }
- }
- },
- "webpack-dev-server": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz",
- "integrity": "sha512-LVHg+EPwZLHIlfvokSTgtJqO/vI5CQi89fASb5JEDtVMDjY0yuIEqPPdMiKaBJIB/Ab7v/UN/sYZ7WsZvntQKw==",
- "dev": true,
- "requires": {
- "ansi-html": "0.0.7",
- "array-includes": "^3.0.3",
- "bonjour": "^3.5.0",
- "chokidar": "^2.0.0",
- "compression": "^1.5.2",
- "connect-history-api-fallback": "^1.3.0",
- "debug": "^3.1.0",
- "del": "^3.0.0",
- "express": "^4.16.2",
- "html-entities": "^1.2.0",
- "http-proxy-middleware": "~0.18.0",
- "import-local": "^1.0.0",
- "internal-ip": "1.2.0",
- "ip": "^1.1.5",
- "killable": "^1.0.0",
- "loglevel": "^1.4.1",
- "opn": "^5.1.0",
- "portfinder": "^1.0.9",
- "selfsigned": "^1.9.1",
- "serve-index": "^1.7.2",
- "sockjs": "0.3.19",
- "sockjs-client": "1.1.5",
- "spdy": "^3.4.1",
- "strip-ansi": "^3.0.0",
- "supports-color": "^5.1.0",
- "webpack-dev-middleware": "3.1.3",
- "webpack-log": "^1.1.2",
- "yargs": "11.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
- "dev": true
- },
- "yargs": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
- "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
- "dev": true,
- "requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.1.1",
- "find-up": "^2.1.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^9.0.2"
- }
- },
- "yargs-parser": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
- "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "webpack-log": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz",
- "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==",
- "dev": true,
- "requires": {
- "chalk": "^2.1.0",
- "log-symbols": "^2.1.0",
- "loglevelnext": "^1.0.1",
- "uuid": "^3.1.0"
- }
- },
- "webpack-merge": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz",
- "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.5"
- }
- },
- "webpack-sources": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
- "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
- "dev": true,
- "requires": {
- "source-list-map": "^2.0.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- }
- }
- },
- "webpack-subresource-integrity": {
- "version": "1.1.0-rc.4",
- "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz",
- "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=",
- "dev": true,
- "requires": {
- "webpack-core": "^0.6.8"
- }
- },
- "websocket-driver": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
- "dev": true,
- "requires": {
- "http-parser-js": ">=0.4.0",
- "websocket-extensions": ">=0.1.1"
- }
- },
- "websocket-extensions": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
- "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
- "dev": true
- },
- "when": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
- "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
- "dev": true
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true,
- "optional": true
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "worker-farm": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
- "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
- "dev": true,
- "requires": {
- "errno": "~0.1.7"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "ws": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
- "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
- "dev": true,
- "requires": {
- "options": ">=0.0.5",
- "ultron": "1.0.x"
- }
- },
- "wtf-8": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
- "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
- "dev": true
- },
- "xml2js": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
- "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
- "dev": true,
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~9.0.1"
- },
- "dependencies": {
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- }
- }
- },
- "xmlbuilder": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
- "dev": true
- },
- "xmlhttprequest-ssl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
- "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- },
- "xxhashjs": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
- "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
- "dev": true,
- "requires": {
- "cuint": "^0.2.2"
- }
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "window-size": "0.1.0"
- }
- },
- "yargs-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
- "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "^3.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true,
- "optional": true
- }
- }
- },
- "yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
- "dev": true
- },
- "yn": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
- "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
- "dev": true
- },
- "zone.js": {
- "version": "0.8.26",
- "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
- "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA=="
- }
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/package.json b/so-monitoring/so-monitoring-ui/src/main/frontend/package.json
deleted file mode 100644
index fcbeabed69..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "onap-so-monitor",
- "version": "0.0.0",
- "scripts": {
- "ng": "ng",
- "start": "ng serve --ssl",
- "build": "ng build",
- "test": "ng test",
- "lint": "ng lint",
- "e2e": "ng e2e"
- },
- "private": true,
- "dependencies": {
- "@angular/animations": "^6.1.3",
- "@angular/cdk": "^6.4.5",
- "@angular/common": "^6.0.3",
- "@angular/compiler": "^6.0.3",
- "@angular/core": "^6.0.3",
- "@angular/forms": "^6.0.3",
- "@angular/http": "^6.0.3",
- "@angular/material": "^6.4.5",
- "@angular/platform-browser": "^6.0.3",
- "@angular/platform-browser-dynamic": "^6.0.3",
- "@angular/router": "^6.0.3",
- "bootstrap": "^4.1.3",
- "bpmn-js": "^2.4.1",
- "core-js": "^2.5.4",
- "jquery": "^3.3.1",
- "ngx-spinner": "^6.1.2",
- "rxjs": "^6.0.0",
- "toastr": "^2.1.4",
- "zone.js": "^0.8.26"
- },
- "devDependencies": {
- "@angular-devkit/build-angular": "~0.6.8",
- "@angular/cli": "~6.0.8",
- "@angular/compiler-cli": "^6.0.3",
- "@angular/language-service": "^6.0.3",
- "@types/jasmine": "~2.8.6",
- "@types/jasminewd2": "~2.0.3",
- "@types/node": "~8.9.4",
- "codelyzer": "~4.2.1",
- "jasmine-core": "~2.99.1",
- "jasmine-spec-reporter": "~4.2.1",
- "karma": "~1.7.1",
- "karma-chrome-launcher": "~2.2.0",
- "karma-coverage-istanbul-reporter": "~2.0.0",
- "karma-jasmine": "~1.1.1",
- "karma-jasmine-html-reporter": "^0.2.2",
- "protractor": "^5.4.0",
- "ts-node": "~5.0.1",
- "tslint": "~5.9.1",
- "typescript": "~2.7.2"
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts
deleted file mode 100644
index 428998dc62..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app-routing.module.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { HomeComponent } from './home/home.component';
-import { DetailsComponent } from './details/details.component';
-
-const routes: Routes = [
- {
- // Route to home page
- path: '',
- component: HomeComponent
- },
- {
- // Route to page to show individual process based on ID
- path: 'details/:id',
- component: DetailsComponent
- }
-];
-
-@NgModule({
- imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],
- exports: [RouterModule]
-})
-
-export class AppRoutingModule { }
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.html
deleted file mode 100644
index ddd274718d..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
--->
-
-<app-topbar></app-topbar>
-<div id="container">
- <app-sidebar></app-sidebar>
- <div id="content">
- <router-outlet></router-outlet>
- </div>
-</div>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.scss
deleted file mode 100644
index e69de29bb2..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.scss
+++ /dev/null
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.spec.ts
deleted file mode 100644
index cb5f53b7d4..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.spec.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { TestBed, async } from '@angular/core/testing';
-import { RouterTestingModule } from '@angular/router/testing';
-import { AppComponent } from './app.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-
-describe('AppComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [
- RouterTestingModule
- ],
- declarations: [
- AppComponent
- ],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ],
- }).compileComponents();
- }));
-
- // Ensure creation of SO Monitoring application
- it('application should be created', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app).toBeTruthy();
- }));
-
-
- // Ensure application title is "SO Monitor"
- it(`should have title 'SO Monitor'`, async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app.title).toEqual('SO Monitor');
- }));
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.ts
deleted file mode 100644
index bac6643783..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.component.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Component } from '@angular/core';
-
-@Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.scss']
-})
-
-export class AppComponent {
- title = 'SO Monitor';
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts
deleted file mode 100644
index 75be395879..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@est.tech, waqas.ikram@est.tech
-*/
-
-import { BrowserModule } from '@angular/platform-browser';
-import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
-import { SidebarComponent } from './sidebar/sidebar.component';
-import { TopbarComponent } from './topbar/topbar.component';
-import { HomeComponent } from './home/home.component';
-import { HttpClientModule } from '@angular/common/http';
-import { FormsModule, ReactiveFormsModule } from '@angular/forms';
-import { DetailsComponent } from './details/details.component';
-import { ToastrNotificationService } from './toastr-notification-service.service';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { MatFormFieldModule, MatInputModule, MatTableModule, MatTabsModule, MatSelectModule, MatNativeDateModule, MatDatepickerModule, MatCardModule, MatPaginatorModule, MatSortModule, MatIconModule } from '@angular/material';
-import { NgxSpinnerModule } from 'ngx-spinner';
-import { RouterModule, Routes } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-
-@NgModule({
- declarations: [
- AppComponent,
- SidebarComponent,
- TopbarComponent,
- HomeComponent,
- DetailsComponent
- ],
- imports: [
- BrowserModule,
- AppRoutingModule,
- HttpClientModule,
- FormsModule,
- MatTableModule,
- MatTabsModule,
- BrowserAnimationsModule,
- MatSelectModule,
- MatFormFieldModule,
- MatInputModule,
- MatDatepickerModule,
- MatNativeDateModule,
- MatCardModule,
- NgxSpinnerModule,
- RouterModule,
- MatPaginatorModule,
- MatSortModule,
- MatIconModule,
- RouterModule.forRoot([]),
- ReactiveFormsModule
- ],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ],
- providers: [ToastrNotificationService],
- bootstrap: [AppComponent]
-})
-export class AppModule { }
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.spec.ts
deleted file mode 100644
index 1718678fad..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.spec.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { TestBed, inject } from '@angular/core/testing';
-
-import { DataService } from './data.service';
-import { HttpClient } from '@angular/common/http';
-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
-import { async } from '@angular/core/testing';
-import { HttpClientModule } from '@angular/common/http';
-import { ToastrNotificationService } from './toastr-notification-service.service';
-import { environment } from '../environments/environment';
-
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {
- }
-}
-
-describe('DataService', () => {
- beforeEach(() => {
- TestBed.configureTestingModule({
- providers: [DataService, { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],
- imports: [HttpClientTestingModule]
- });
- });
-
- // Ensure creation of DataService component
- it('component should be created', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- expect(service).toBeTruthy();
- })));
-
- // Test getBpmnInfraRequest function making POST call
- it('test getBpmnInfraRequest POST request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getBpmnInfraRequest({}, 1, 2).subscribe(data => { });
- var url = environment.soMonitoringBackendURL + 'v1/search?from=1&to=2';
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('POST');
- mockReq.flush({});
- })));
-
- // Test getProcessInstanceId function making GET request to retrieve processInstanceID
- it('test getProcessInstanceId GET request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getProcessInstanceId("").subscribe(data => { });
- var url = environment.soMonitoringBackendURL + 'process-instance-id/' + "";
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('GET');
- mockReq.flush({});
- })));
-
- // Test getActivityInstance function making GET request to retrieve activityInstance
- it('test getActivityInstance GET request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getActivityInstance("").then(data => { });
- var url = environment.soMonitoringBackendURL + 'activity-instance/' + "";
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('GET');
- mockReq.flush({});
- })));
-
- // Test getProcessInstance function making GET request to retrieve processInstance
- it('test getProcessInstance GET request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getProcessInstance("");
- var url = environment.soMonitoringBackendURL + 'process-instance/' + "";
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('GET');
- })));
-
- // Test getProcessDefinition function making GET request to retrieve processDefinition
- it('test getProcessDefinition GET request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getProcessDefinition("").subscribe(data => { });
- var url = environment.soMonitoringBackendURL + 'process-definition/' + "";
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('GET');
- mockReq.flush({});
- })));
-
- // Test getVariableInstance function making GET request to retrieve variableInstance
- it('test getVariableInstance GET request', async(inject([HttpTestingController, DataService, ToastrNotificationService],
- (httpClient: HttpTestingController, service: DataService, toastr: ToastrNotificationService) => {
- service.getVariableInstance("").subscribe(data => { });
- var url = environment.soMonitoringBackendURL + 'variable-instance/' + "";
- const mockReq = httpClient.expectOne(url);
- expect(mockReq.request.method).toEqual('GET');
- mockReq.flush({});
- })));
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts
deleted file mode 100644
index b391672728..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/data.service.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http';
-import { BpmnInfraRequest } from './model/bpmnInfraRequest.model';
-import { catchError } from 'rxjs/operators';
-import { Observable } from 'rxjs';
-import { ProcessInstanceId } from './model/processInstanceId.model';
-import { environment } from '../environments/environment';
-import { HttpResponse } from '@angular/common/http';
-import { ProcessInstanceDetail } from './model/processInstance.model';
-import { HttpErrorHandlerService } from './http-error-handler.service';
-import { ActivityInstance } from './model/activityInstance.model';
-
-
-@Injectable({
- providedIn: 'root'
-})
-export class DataService {
-
- constructor(private http: HttpClient, private httpErrorHandlerService: HttpErrorHandlerService) { }
-
- // HTTP POST call to running Spring Boot application
- getBpmnInfraRequest(servInstId: {}, from: number, to: number): Observable<BpmnInfraRequest[]> {
- var url = environment.soMonitoringBackendURL + 'v1/search?from=' + from + "&to=" + to;
- return this.http.post<BpmnInfraRequest[]>(url, servInstId)
- .pipe(
- catchError(this.httpErrorHandlerService.handleError("POST", url))
- );
- }
-
- // HTTP GET to return Process Instance using RequestID
- getProcessInstanceId(requestId: string): Observable<HttpResponse<ProcessInstanceId>> {
- var url = environment.soMonitoringBackendURL + 'process-instance-id/' + requestId;
- console.log(requestId);
- return this.http.get<ProcessInstanceId>(url, { observe: 'response' })
- .pipe(
- catchError(this.httpErrorHandlerService.handleError("GET", url))
- );
- }
-
- // HTTP GET to return Activity instancs using ProcessInstanceID
- getActivityInstance(processInstanceId: string): Promise<ActivityInstance[]> {
- var url = environment.soMonitoringBackendURL + 'activity-instance/' + processInstanceId;
- return this.http.get<ActivityInstance[]>(url)
- .pipe(
- catchError(this.httpErrorHandlerService.handleError("GET", url))
- ).toPromise();
- }
-
- // HTTP GET to return Activity Instance using ProcessInstanceID
- async getProcessInstance(processInstanceId: string): Promise<ProcessInstanceDetail> {
- var url = environment.soMonitoringBackendURL + 'process-instance/' + processInstanceId;
- return await (this.http.get<ProcessInstanceDetail>(url)
- .pipe(
- catchError(this.httpErrorHandlerService.handleError("GET", url))))
- .toPromise();
- }
-
- // HTTP GET to return Process Definition using processDefinitionId
- getProcessDefinition(processDefinitionId: string): Observable<Object> {
- var url = environment.soMonitoringBackendURL + 'process-definition/' + processDefinitionId;
- return this.http.get(url).pipe(
- catchError(this.httpErrorHandlerService.handleError("GET", url))
- );
- }
-
- // HTTP GET to return Variable Instance using ProcessInstanceID
- getVariableInstance(processDefinitionId: string): Observable<Object> {
- var url = environment.soMonitoringBackendURL + 'variable-instance/' + processDefinitionId;
- return this.http.get(url).pipe(
- catchError(this.httpErrorHandlerService.handleError("GET", url))
- );
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.html
deleted file mode 100644
index 8ad955f38e..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!--
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@est.tech, waqas.ikram@est.tech
--->
-
-<div class="completeForm">
- <div class="topCanvas">
- <div class="navigation">
- <button class="zoomButton" mat-icon-button title="zoom in" (click)="zoomIn()">
- <mat-icon>zoom_in</mat-icon>
- </button>
- <button class="zoomButton" mat-icon-button title="zoom out" (click)="zoomOut()">
- <mat-icon>zoom_out</mat-icon>
- </button>
- <button class="zoomButton" mat-icon-button title="reset zoom" (click)="resetZoom()">
- <mat-icon>all_out</mat-icon>
- </button>
- </div>
- <div #canvas class="canvas" id="canvas"></div>
- <mat-card class="besideCanvas" id="besideCanvas">
- <mat-card-title>Process Information</mat-card-title>
- <br />
- <mat-card-content>Process Instance Id: </mat-card-content>
- <mat-card-content>{{ processInstanceID }}</mat-card-content>
- <br />
- <mat-card-content>Process Definition Id: </mat-card-content>
- <mat-card-content>{{ processDefinitionID }}</mat-card-content>
- <br />
- <mat-card-content>Process Definition Name: </mat-card-content>
- <mat-card-content>{{ processDefinitionName }}</mat-card-content>
- </mat-card>
- </div>
- <br />
-
- <div class="example-container mat-elevation-z8">
- <mat-tab-group class="tab-group">
- <mat-tab label="Activity Instances">
- <mat-table [dataSource]="activityInstance">
- <ng-container matColumnDef="activityId">
- <mat-header-cell *matHeaderCellDef> Activity Id </mat-header-cell>
- <mat-cell *matCellDef="let activity"> {{ activity.activityId }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="activityName">
- <mat-header-cell *matHeaderCellDef> Activity Name </mat-header-cell>
- <mat-cell *matCellDef="let activity">
- <div [ngSwitch]="!!activity.calledProcessInstanceId">
- <div *ngSwitchCase="false"><a> {{ activity.activityName }} </a></div>
- <div *ngSwitchCase="true"><a [routerLink]="['/details', activity.calledProcessInstanceId]"> {{ activity.activityName }} </a></div>
- </div>
- </mat-cell>
- </ng-container>
- <ng-container matColumnDef="activityType">
- <mat-header-cell *matHeaderCellDef> Activity Type </mat-header-cell>
- <mat-cell *matCellDef="let activity"> {{ activity.activityType }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="startTime">
- <mat-header-cell *matHeaderCellDef> Start Time </mat-header-cell>
- <mat-cell *matCellDef="let activity"> {{ (activity.startTime | date:'yyyy-MM-dd HH:mm:sss Z') }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="endTime">
- <mat-header-cell *matHeaderCellDef> End Time </mat-header-cell>
- <mat-cell *matCellDef="let activity"> {{ (activity.endTime | date:'yyyy-MM-dd HH:mm:sss Z') }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="durationInMillis">
- <mat-header-cell *matHeaderCellDef> Duration (ms) </mat-header-cell>
- <mat-cell *matCellDef="let activity"> {{ activity.durationInMillis }} </mat-cell>
- </ng-container>
- <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
- <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
- </mat-table>
- </mat-tab>
-
- <mat-tab label="Variable Instances">
- <mat-table [dataSource]="variableInstance">
- <ng-container matColumnDef="name">
- <mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
- <mat-cell *matCellDef="let variable"> {{ variable.name }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="type">
- <mat-header-cell *matHeaderCellDef> Type </mat-header-cell>
- <mat-cell *matCellDef="let variable"> {{ variable.type }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="value">
- <mat-header-cell *matHeaderCellDef> Value </mat-header-cell>
- <mat-cell *matCellDef="let variable"> {{ variable.value }} </mat-cell>
- </ng-container>
- <mat-header-row *matHeaderRowDef="displayedColumnsVariable"></mat-header-row>
- <mat-row *matRowDef="let row; columns: displayedColumnsVariable;"></mat-row>
- </mat-table>
- </mat-tab>
- </mat-tab-group>
- </div>
-</div>
-
-<ngx-spinner bdColor="rgba(51, 51, 51, 0.8)" size="large" color="#00285f" type="ball-spin-clockwise-fade-rotating"></ngx-spinner>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.scss
deleted file mode 100644
index b96fe4ace2..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.scss
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@est.tech, waqas.ikram@est.tech
-*/
-#canvas {
- background: white;
- padding: 0;
- margin-left: -43px;
- width: 70%;
- height: 470px;
- margin-top: 0;
- box-shadow: 0 8px 10px 1px rgba(0,0,0,.2);
-}
-
-.navigation {
- background: #e6e6e6;
- width: 40px;
- box-shadow: -5px 8px 10px 1px rgba(0,0,0,.2);
- height: 470px;
- border: 1px;
- border-color: black;
- position: relative;
-}
-
-.zoomButton {
- padding-top: 8px;
- background: none;
- border: none;
-}
-
-#besideCanvas {
- background: white;
- padding-left: 20px;
- margin: 0;
- width: 25%;
- height: 470px;
- margin-top: 0;
- box-shadow: 0 5px 5px -3px rgba(0,0,0,.2), 0 8px 10px 1px rgba(0,0,0,.14), 0 3px 14px 2px rgba(0,0,0,.12);
- font-family: 'Montserrat', sans-serif;
- font-size: 17px;
-}
-
-.topCanvas {
- display: flex;
- justify-content: space-between;
-}
-
-.mat-column-durationInMillis {
- flex: 0 0 8%;
-}
-
-.mat-column-name {
- flex: 0 0 40%;
-}
-
-.mat-column-type {
- flex: 0 0 8%;
-}
-
-.mat-column-value {
- flex: 0 0 52%;
-}
-
-.highlight:not(.djs-connection) .djs-visual > :nth-child(1) {
- fill: cyan !important;
- /* color elements as green */
-}
-
-.tab-group {
- word-break: break-all;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts
deleted file mode 100644
index 4ffacce782..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DetailsComponent } from './details.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { RouterTestingModule } from '@angular/router/testing';
-import { MatTableModule } from '@angular/material';
-import { inject } from '@angular/core/testing';
-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
-import { HttpClientModule } from '@angular/common/http';
-import { HttpClient } from '@angular/common/http';
-import { RouterModule } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { DataService } from '../data.service';
-import { Observable, of, throwError } from 'rxjs';
-import { ActivityInstance } from '../model/activityInstance.model';
-import { ProcessDefinitionDetail } from '../model/processDefinition.model';
-import { ProcessInstanceDetail } from '../model/processInstance.model';
-import { VariableInstance } from '../model/variableInstance.model';
-import { ActivatedRoute } from '@angular/router';
-import { Params } from '@angular/router';
-
-// Generate stub for toastr popup notifications
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {}
- info() {}
- error() {}
-}
-
-const startActivity: ActivityInstance = {
- activityId: "StartEvent_1",
- processInstanceId: "processInstanceId-val-1234",
- calledProcessInstanceId: "",
- activityName: "",
- activityType: "",
- durationInMillis: "1",
- endTime: "",
- startTime: ""
-};
-
-const subProcessActivity: ActivityInstance = {
- activityId: "CallActivity_14h26ae",
- processInstanceId: "processInstanceId-val-1234",
- calledProcessInstanceId: "1234",
- activityName: "",
- activityType: "",
- durationInMillis: "1",
- endTime: "",
- startTime: ""
-};
-
-const processDefinition: ProcessDefinitionDetail = {
- processDefinitionId: "processDefinitionId-val-1234",
- processDefinitionXml: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
- "<bpmn:definitions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" id=\"Definitions_01lwydo\" targetNamespace=\"http://bpmn.io/schema/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"2.2.4\">" +
- " <bpmn:process id=\"Process_1\" isExecutable=\"true\">" +
- " <bpmn:startEvent id=\"StartEvent_1\">" +
- " <bpmn:outgoing>SequenceFlow_1rrp6qt</bpmn:outgoing>" +
- " </bpmn:startEvent>" +
- " <bpmn:callActivity id=\"CallActivity_14h26ae\" name=\"Sub Process\" calledElement=\"DecomposeService\">" +
- " <bpmn:incoming>SequenceFlow_1rrp6qt</bpmn:incoming>" +
- " <bpmn:outgoing>SequenceFlow_0yvdjct</bpmn:outgoing>" +
- " </bpmn:callActivity>" +
- " <bpmn:sequenceFlow id=\"SequenceFlow_1rrp6qt\" sourceRef=\"StartEvent_1\" targetRef=\"CallActivity_14h26ae\" />" +
- " <bpmn:endEvent id=\"EndEvent_039q5o1\">" +
- " <bpmn:incoming>SequenceFlow_0yvdjct</bpmn:incoming>" +
- " </bpmn:endEvent>" +
- " <bpmn:sequenceFlow id=\"SequenceFlow_0yvdjct\" sourceRef=\"CallActivity_14h26ae\" targetRef=\"EndEvent_039q5o1\" />" +
- " </bpmn:process>" +
- " <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">" +
- " <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">" +
- " <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">" +
- " <dc:Bounds x=\"173\" y=\"102\" width=\"36\" height=\"36\" />" +
- " </bpmndi:BPMNShape>" +
- " <bpmndi:BPMNShape id=\"CallActivity_14h26ae_di\" bpmnElement=\"CallActivity_14h26ae\">" +
- " <dc:Bounds x=\"267\" y=\"80\" width=\"100\" height=\"80\" />" +
- " </bpmndi:BPMNShape>" +
- " <bpmndi:BPMNEdge id=\"SequenceFlow_1rrp6qt_di\" bpmnElement=\"SequenceFlow_1rrp6qt\">" +
- " <di:waypoint x=\"209\" y=\"120\" />" +
- " <di:waypoint x=\"267\" y=\"120\" />" +
- " </bpmndi:BPMNEdge>" +
- " <bpmndi:BPMNShape id=\"EndEvent_039q5o1_di\" bpmnElement=\"EndEvent_039q5o1\">" +
- " <dc:Bounds x=\"451\" y=\"102\" width=\"36\" height=\"36\" />" +
- " </bpmndi:BPMNShape>" +
- " <bpmndi:BPMNEdge id=\"SequenceFlow_0yvdjct_di\" bpmnElement=\"SequenceFlow_0yvdjct\">" +
- " <di:waypoint x=\"367\" y=\"120\" />" +
- " <di:waypoint x=\"451\" y=\"120\" />" +
- " </bpmndi:BPMNEdge>" +
- " </bpmndi:BPMNPlane>" +
- " </bpmndi:BPMNDiagram>" +
- "</bpmn:definitions>"
-};
-
-const emptyProcessDefinition: ProcessDefinitionDetail = {
- processDefinitionId: "processDefinitionId-val",
- processDefinitionXml: ""
-};
-
-const processInstance: ProcessInstanceDetail = {
- processInstanceId: "processInstanceId-val-1234",
- processDefinitionId: "1",
- processDefinitionName: "test",
- superProcessInstanceId: "1"
-};
-
-const varInstanceObj: VariableInstance = {
- name: 'ABC',
- type: 'Object',
- value: '{value: 1234}'
-};
-
-const varInstanceStr: VariableInstance = {
- name: 'NameStr',
- type: 'String',
- value: 'valOfStr'
-};
-
-describe('DetailsComponent', (displayCamundaflow = {}) => {
- // Create SPY Object for Jasmine tests to mock DataService
- let spyDataService: jasmine.SpyObj<DataService>;
- let component: DetailsComponent;
- let fixture: ComponentFixture<DetailsComponent>;
-
- beforeEach(async(() => {
- spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance', 'getProcessDefinition', 'getProcessInstance']);
-
- TestBed.configureTestingModule({
- providers: [DetailsComponent, HttpClient, HttpTestingController,
- { provide: APP_BASE_HREF, useValue: '/' },
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService },
- { provide: DataService, useValue: spyDataService },
- { provide: ActivatedRoute, useValue: { params: of({ id: '1234' }) } }],
- imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])],
- declarations: [DetailsComponent],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- });
- fixture = TestBed.createComponent(DetailsComponent);
- component = fixture.componentInstance;
- }));
-
- // Ensure creation of DetailsComponent component
- it('component should be created', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- expect(detailsComponent).toBeTruthy();
- }));
-
- // Create a processInstance and ensure it is defined
- it('processInstance should be defined if PII populated', async(() => {
- spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
- spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
- spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
- spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
- component.ngOnInit();
-
- fixture.whenStable().then(() => {
- expect(component.processInstance).toBeDefined();
- });
- }));
-
- it('should handle bpmnViewer.importXML error', () => {
- spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
- spyDataService.getProcessDefinition.and.returnValue(of(emptyProcessDefinition));
- spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
- spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
- component.ngOnInit();
- });
-
- it('should handle error when dataService.getProcessInstance returns an error', () => {
- spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
- spyDataService.getProcessInstance.and.returnValue(Promise.reject(new Error('getProcessInstance Promise should not be resolved')));
- component.ngOnInit();
- });
-
- it('should handle error when data.getVariableInstance returns an error', () => {
- spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity]));
- spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
- spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
- spyDataService.getVariableInstance.and.callFake(() => {
- return throwError(new Error('getVariableInstance error'));
- });
- component.ngOnInit();
- });
-
- it('should handle error when data.getActivityInstance and data.getProcessDefinition return errors', () => {
- spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance));
- spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj]));
- spyDataService.getProcessDefinition.and.returnValue(of(processDefinition));
- spyDataService.getActivityInstance.and.returnValue(Promise.reject(new Error('getActivityInstance Promise should not be resolved')));
- spyDataService.getProcessDefinition.and.callFake(() => {
- return throwError(new Error('getProcessDefinition error'));
- });
- component.ngOnInit();
- });
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.ts
deleted file mode 100644
index a42fa3f5a6..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.ts
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@est.tech, waqas.ikram@est.tech
-*/
-
-import { Component, OnInit } from '@angular/core';
-import { DataService } from '../data.service';
-import { ActivatedRoute, Router } from "@angular/router";
-import { BpmnInfraRequest } from '../model/bpmnInfraRequest.model';
-import { ActivityInstance } from '../model/activityInstance.model';
-import { ProcessInstanceDetail } from '../model/processInstance.model';
-import { ProcessDefinitionDetail } from '../model/processDefinition.model';
-import { CommonModule } from '@angular/common';
-import Viewer from 'bpmn-js/lib/NavigatedViewer';
-import { ViewEncapsulation } from '@angular/core';
-import { MatTabsModule } from '@angular/material/tabs';
-import { VariableInstance } from '../model/variableInstance.model';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { NgxSpinnerService } from 'ngx-spinner';
-import { ElementRef, ViewChild } from '@angular/core';
-
-@Component({
- selector: 'app-details',
- templateUrl: './details.component.html',
- styleUrls: ['./details.component.scss'],
- encapsulation: ViewEncapsulation.None
-})
-
-export class DetailsComponent implements OnInit {
-
- @ViewChild("canvas") elementReference: ElementRef;
-
- bpmnViewer: any;
-
- processInstanceID: string;
-
- processDefinitionID: string;
-
- processDefinitionName: string;
-
- activityInstance: ActivityInstance[];
-
- processInstance: ProcessInstanceDetail;
-
- processDefinition: ProcessDefinitionDetail;
-
- variableInstance: VariableInstance[];
-
- displayedColumns = ['activityId', 'activityName', 'activityType', 'startTime', 'endTime', 'durationInMillis'];
-
- displayedColumnsVariable = ['name', 'type', 'value'];
-
- constructor(private route: ActivatedRoute, private data: DataService, private popup: ToastrNotificationService,
- private router: Router, private spinner: NgxSpinnerService) { }
-
- async getActivityInstance(procInstId: string) {
- await this.data.getActivityInstance(procInstId).then(
- (data: ActivityInstance[]) => {
- this.activityInstance = data;
- console.log(data);
- }, error => {
- console.log(error);
- this.popup.error("Unable to get activity instance details for id: " + procInstId + " Error code:" + error.status);
- });
- }
-
- async getProcessDefinition(procDefId: string) {
- await this.data.getProcessDefinition(procDefId).subscribe(
- async (data: ProcessDefinitionDetail) => {
- this.processDefinition = data;
- console.log(data);
- await this.displayCamundaflow(this.processDefinition.processDefinitionXml, this.activityInstance,
- this.router, this.spinner, this.popup);
- }, error => {
- console.log(error);
- this.popup.error("Unable to get process definition for id: " + procDefId + " Error code:" + error.status);
- });
- }
-
- async getProcInstance(procInstId: string) {
- await this.data.getProcessInstance(procInstId).then(
- async (data: ProcessInstanceDetail) => {
- this.processInstance = data;
- this.processDefinitionID = this.processInstance.processDefinitionId;
- this.processDefinitionName = this.processInstance.processDefinitionName;
- console.log("Process definition id: " + this.processDefinitionID);
- await this.getActivityInstance(this.processInstanceID);
- await this.getProcessDefinition(this.processDefinitionID);
- }, error => {
- console.log(error);
- this.popup.error("Unable to get process instance for id: " + procInstId + " Error code:" + error.status);
- });
- }
-
- displayCamundaflow(bpmnXml, activities: ActivityInstance[], router: Router,
- spinner: NgxSpinnerService, popup: ToastrNotificationService) {
- spinner.show();
-
- this.bpmnViewer.importXML(bpmnXml, (error) => {
- if (error) {
- console.error('Unable to load BPMN flow ', error);
- popup.error('Unable to load BPMN flow ');
- spinner.hide();
- } else {
- spinner.hide();
- let canvas = this.bpmnViewer.get('canvas');
- var eventBus = this.bpmnViewer.get('eventBus');
- var elementRegistry = this.bpmnViewer.get('elementRegistry');
- var overlays = this.bpmnViewer.get('overlays');
-
- activities.forEach(a => {
- if (a.calledProcessInstanceId !== null) {
- var element = elementRegistry.get(a.activityId);
- let newNode = document.createElement('div');
- newNode.className = 'highlight-overlay';
- newNode.id = element.id;
- newNode.style.width = element.width + "px";
- newNode.style.height = element.height + "px";
- newNode.style.cursor = "pointer";
-
- overlays.add(a.activityId, {
- position: {
- top: -5,
- left: -5
- },
- html: newNode
- });
-
- newNode.addEventListener('click', function(e) {
- console.log("clicked on: " + e.srcElement.id)
- activities.forEach(a => {
- if (a.activityId == e.srcElement.id && a.calledProcessInstanceId !== null) {
- console.log("will drill down to : " + a.calledProcessInstanceId);
- router.navigate(['/details/' + a.calledProcessInstanceId]);
- }
- });
- });
- }
- });
- // zoom to fit full viewport
- canvas.zoom('fit-viewport', 'auto');
- activities.forEach(a => {
- canvas.addMarker(a.activityId, 'highlight');
- });
- }
- });
- }
-
- zoomIn() {
- this.bpmnViewer.get('zoomScroll').zoom(1, {
- x: this.elementReference.nativeElement.offsetWidth / 2,
- y: this.elementReference.nativeElement.offsetHeight / 2
- });
- }
-
- zoomOut() {
- this.bpmnViewer.get('zoomScroll').zoom(-1, {
- x: this.elementReference.nativeElement.offsetWidth / 2,
- y: this.elementReference.nativeElement.offsetHeight / 2
- });
- }
- resetZoom() {
- let canvas = this.bpmnViewer.get('canvas');
- canvas.resized();
- canvas.zoom('fit-viewport', 'auto');
-
- }
-
- getVarInst(procInstId: string) {
- this.data.getVariableInstance(procInstId).subscribe(
- (data: VariableInstance[]) => {
- this.variableInstance = [];
- for (let i = 0; i < data.length; i++) {
- var value = data[i]['value'];
- var type = data[i]['type'];
- if ((type == 'Object') && !(value == null)) {
- try {
- data[i]['value'] = JSON.stringify(value, null, 2);
- }
- catch (error) {
- console.log("Unable to \nError Code: " + error);
- }
- }
- this.variableInstance[i] = data[i];
- }
- console.log(data);
- }, error => {
- console.log(error);
- this.popup.error("Unable to get Variable instances for id: " + procInstId + " Error code:" + error.status);
- });
- }
-
- async ngOnInit() {
- this.bpmnViewer = new Viewer({
- container: '.canvas'
- });
- this.route.params.subscribe(
- async params => {
- this.processInstanceID = params.id as string;
- console.log("Will GET BpmnInfraRequest instance using id: " + this.processInstanceID);
- await this.getProcInstance(this.processInstanceID);
-
- this.getVarInst(this.processInstanceID);
- });
- }
-
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
deleted file mode 100644
index 4fd8cc4c33..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<!--
-============LICENSE_START=======================================================
-Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
--->
-
-<base href="/">
-
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
-<link rel="stylesheet" ng-href="./home.component.scss">
-<div class="completeForm">
- <div class="searchArea">
-
- <!-- Dropdown Filter and TextBox for Service Instance Id -->
- <div class="container-home">
- <mat-form-field class="selectFilter">
- <mat-select class="formatBox" [(value)]="searchData.selectedValueSII" placeholder="Select Filter">
- <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
- </mat-select>
- </mat-form-field>
- <mat-form-field class="valueInput">
- <input matInput #searchValueSII type="text" [(ngModel)]="searchData.serviceInstanceId" placeholder="Service Instance Id">
- </mat-form-field>
- </div>
-
- <!-- Dropdown Filter and TextBox for Request Id -->
- <div class="container-home">
- <mat-form-field class="selectFilter">
- <mat-select class="formatBox" [(value)]="searchData.selectedValueRI" placeholder="Select Filter">
- <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
- </mat-select>
- </mat-form-field>
- <mat-form-field class="valueInput">
- <input matInput #searchValueRI type="text" [(ngModel)]="searchData.requestId" placeholder="Request Id">
- </mat-form-field>
-
- <!-- Angular Start Date Picker -->
- <mat-form-field class="startDate">
- <input matInput #startDate [matDatepicker]="picker" [(ngModel)]="searchData.startDate" placeholder="Choose a start date">
- <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
- <mat-datepicker #picker></mat-datepicker>
- </mat-form-field>
-
- <!-- Dropdown box for Start Hour selection -->
- <mat-form-field class="selectHour">
- <mat-select class="formatBox" [(value)]="searchData.selectedStartHour" placeholder="Select Hour">
- <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>
- </mat-select>
- </mat-form-field>
-
- <!-- Dropdown box for Start Minute selection -->
- <mat-form-field class="selectMinute">
- <mat-select class="formatBox" [(value)]="searchData.selectedStartMinute" placeholder="Select Minute">
- <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>
- </mat-select>
- </mat-form-field>
- </div>
-
- <!-- Dropdown Filter and TextBox for Service Name -->
- <div class="container-home">
- <mat-form-field class="selectFilter">
- <mat-select class="formatBox" [(value)]="searchData.selectedValueSN" placeholder="Select Filter">
- <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option>
- </mat-select>
- </mat-form-field>
- <mat-form-field class="valueInput">
- <input matInput #searchValueSN type="text" [(ngModel)]="searchData.serviceInstanceName" placeholder="Service Name">
- </mat-form-field>
-
- <!-- Angular End Date Picker -->
- <mat-form-field class="endDate">
- <input matInput #endDate [matDatepicker]="endpicker" [(ngModel)]="searchData.endDate" placeholder="Choose an end date">
- <mat-datepicker-toggle matSuffix [for]="endpicker"></mat-datepicker-toggle>
- <mat-datepicker #endpicker></mat-datepicker>
- </mat-form-field>
-
- <!-- Dropdown box for End Hour selection -->
- <mat-form-field class="selectHour">
- <mat-select class="formatBox" [(value)]="searchData.selectedEndHour" placeholder="Select Hour">
- <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>
- </mat-select>
- </mat-form-field>
-
- <!-- Dropdown box for End Minute selection -->
- <mat-form-field class="selectMinute">
- <mat-select class="formatBox" [(value)]="searchData.selectedEndMinute" placeholder="Select Minute">
- <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>
- </mat-select>
- </mat-form-field>
- </div>
-
- <!-- Dropdown Filter for Status -->
- <div class="container-home">
- <mat-form-field class="selectFilter">
- <mat-select class="formatBox" [(value)]="searchData.selectedValueSTATUS" placeholder="Status">
- <mat-option *ngFor="let statusOption of statusOptions" [value]="statusOption.value">{{ statusOption.name }}</mat-option>
- </mat-select>
- </mat-form-field>
- </div>
- <br />
-
- <!-- Button to call makeCall() function to commence search based on parameters -->
- <button (click)="makeCall()" class="fa fa-search"></button>
- </div>
-
- <br />
-
- <!-- Table to display selected fields if data present -->
- <div class="example-container mat-elevation-z8">
- <mat-tab-group class="tab-group">
- <mat-tab label="Service Instances">
- <mat-table [dataSource]="processData" matSort>
- <ng-container matColumnDef="requestId">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Request Id </mat-header-cell>
- <mat-cell *matCellDef="let process"><a routerLink="" (click)="getProcessInstanceId(process.requestId)">{{ process.requestId }}</a></mat-cell>
- </ng-container>
- <ng-container matColumnDef="serviceInstanceId">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Instance Id </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ process.serviceInstanceId }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="serviceInstanceName">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Instance Name </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ process.serviceInstanceName }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="networkId">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Network Id </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ process.networkId }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="requestStatus">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Request Status </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ process.requestStatus }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="serviceType">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Service Type </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ process.serviceType }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="startTime">
- <mat-header-cell *matHeaderCellDef mat-sort-header> Start Time </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ (process.startTime | date:'yyyy-MM-dd HH:mm:sss Z') }} </mat-cell>
- </ng-container>
- <ng-container matColumnDef="endTime">
- <mat-header-cell *matHeaderCellDef mat-sort-header> End Time </mat-header-cell>
- <mat-cell *matCellDef="let process"> {{ (process.endTime | date:'yyyy-MM-dd HH:mm:sss Z') }} </mat-cell>
- </ng-container>
- <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
- <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
- </mat-table>
- <mat-paginator [pageSizeOptions]="pageSizeOptions" showFirstLastButtons>
- </mat-paginator>
- </mat-tab>
-
- <mat-tab label="Service Statistics">
- <div id="servStats">
- <table class="statsTable">
- <tbody>
- <tr>
- <td>Total: {{ totalVal }}</td>
- <td></td>
- </tr>
- <tr>
- <td>Complete: {{ completeVal }}</td>
- <td> {{ percentageComplete }}%</td>
- </tr>
- <tr>
- <td>Failed: {{ failedVal }}</td>
- <td> {{ percentageFailed }}%</td>
- </tr>
- <tr>
- <td>In Progress: {{ inProgressVal }}</td>
- <td> {{ percentageInProg }}%</td>
- </tr>
- <tr>
- <td>Pending: {{ pendingVal }}</td>
- <td> {{ percentagePending }}%</td>
- </tr>
- <tr>
- <td>Unlocked: {{ unlockedVal }}</td>
- <td> {{ percentageUnlocked }}%</td>
- </tr>
- </tbody>
- </table>
- </div>
- </mat-tab>
- </mat-tab-group>
- </div>
-</div>
-
-<ngx-spinner bdColor="rgba(51, 51, 51, 0.8)" size="large" color="#00285f" type="ball-spin-clockwise-fade-rotating"></ngx-spinner>
-<router-outlet></router-outlet>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.scss
deleted file mode 100644
index 923066face..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.scss
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
-============LICENSE_START=======================================================
-Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-@import "~@angular/material/prebuilt-themes/indigo-pink.css";
-
-.searchArea {
- background-color: white;
- padding: 10px;
- height: 345px;
- box-shadow: 0 5px 5px -3px rgba(0,0,0,.2), 0 8px 10px 1px rgba(0,0,0,.14), 0 3px 14px 2px rgba(0,0,0,.12);
-}
-
-.mat-form-field-appearance-legacy .mat-form-field-wrapper {
- padding-bottom: 1.25em;
- font-family: 'Montserrat', sans-serif;
-}
-
-.selectFilter {
- width: 120px;
-}
-
-.valueInput {
- width: 400px;
- margin-left: 30px;
-}
-
-.selectFilter.mat-select.ng-tns-c5-1.ng-star-inserted {
- font-family: 'Montserrat', sans-serif;
- font-size: 17px;
-}
-
-.mat-form-field-flex .valueInput {
- font-family: 'Montserrat', sans-serif;
- font-size: 17px;
-}
-
-.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {
- color: #00285F;
-}
-
-.mat-option {
- font-size: 17px;
- line-height: 3em;
- height: 3em;
- font-family: 'Montserrat', sans-serif;
-}
-
-.mat-select-arrow {
- color: #00285F;
-}
-
-.mat-form-field.mat-focused.mat-primary .mat-select-arrow {
- color: #00285F;
-}
-
-.mat-form-field-appearance-legacy .mat-form-field-underline {
- color: #00285F;
-}
-
-.fa {
- float: left;
- width: 120px;
- padding: 10px;
- background: #2196F3;
- color: white;
- height: 40px;
- font-size: 17px;
- border: 1px solid grey;
- border-left: none;
- cursor: pointer;
-}
-
-form.example button:hover {
- background: #0b7dda;
-}
-
-form.example::after {
- content: "";
- clear: both;
- display: table;
-}
-
-.formFields {
- display: inline-flex;
-}
-
-.endDate,
-.startDate {
- margin-left: 90px;
- width: 140px;
-}
-
-.selectHour,
-.selectMinute {
- margin-left: 30px;
- width: 100px;
-}
-
-#servStats {
- background-color: white;
- padding: 10px;
- font-size: 17px;
- font-family: 'Montserrat', sans-serif;
-}
-
-.statsTable {
- td {
- padding: 12px 80px 12px 12px;
- text-align: left;
- border-bottom: 1px solid #ccc;
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts
deleted file mode 100644
index 0da24ccf36..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { HomeComponent } from './home.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { MatTableModule, MatNativeDateModule, MatTableDataSource, MatPaginatorModule } from '@angular/material';
-import { FormsModule } from '@angular/forms';
-import { MatDatepickerModule } from '@angular/material/datepicker';
-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
-import { HttpClientModule } from '@angular/common/http';
-import { HttpClient } from '@angular/common/http';
-import { inject } from '@angular/core/testing';
-import { RouterModule } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { environment } from '../../environments/environment.prod';
-import { Observable, of, throwError } from 'rxjs';
-import { SearchRequest } from '../model/SearchRequest.model';
-import { DataService } from '../data.service'; // may be able to remove
-import { BpmnInfraRequest } from '../model/bpmnInfraRequest.model';
-import { By } from '@angular/platform-browser';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { ProcessInstanceId } from '../model/processInstanceId.model';
-import { HttpResponse } from '@angular/common/http';
-import { Router } from '@angular/router';
-import { Routes } from '@angular/router';
-import { RouterTestingModule } from '@angular/router/testing';
-import { DetailsComponent } from '../details/details.component';
-
-// Generate stub for toastr popup notifications
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {}
- info() {}
- error() {}
-}
-
-const routes: Routes = [ { path: 'details/114e9ae4-4a32-11e9-8646-d663bd873d93' , component: DetailsComponent} ]
-
-describe('HomeComponent', () => {
- let spyDataService: jasmine.SpyObj<DataService>;
- let router: Router;
- let component: HomeComponent;
- let fixture: ComponentFixture<HomeComponent>;
-
- beforeEach(() => {
- spyDataService = jasmine.createSpyObj('DataService', ['getBpmnInfraRequest', 'getProcessInstanceId']);
-
- TestBed.configureTestingModule({
- providers: [
- { provide: DataService, useValue: spyDataService },
- { provide: APP_BASE_HREF, useValue: '/' },
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],
- imports: [MatPaginatorModule, BrowserAnimationsModule, MatTableModule, FormsModule, MatDatepickerModule, MatNativeDateModule, HttpClientModule, RouterTestingModule.withRoutes(routes)],
- declarations: [HomeComponent, DetailsComponent],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- });
-
- fixture = TestBed.createComponent(HomeComponent);
- router = TestBed.get(Router);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- // Ensure creation of HomeComponent component
- it('component should be created', () => {
- expect(component).toBeTruthy();
- });
-
- // Ensure all statistic variables are initialised to zero
- it('should ensure statistic variables are defaulted at zero', () => {
- expect(component.totalVal === 0 && component.completeVal === 0 &&
- component.inProgressVal === 0 && component.failedVal === 0 &&
- component.pendingVal === 0 && component.unlockedVal === 0 &&
- component.percentageComplete === 0 && component.percentageFailed === 0 &&
- component.percentageInProg === 0 && component.percentagePending === 0 &&
- component.percentageUnlocked === 0).toBeTruthy();
- });
-
- it('should should navigate to a process if response status is OK', async(() => {
- spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: '114e9ae4-4a32-11e9-8646-d663bd873d93'}, status: 200}));
- spyOn(router, 'navigate');
- component.getProcessInstanceId('e8a75940-4a32-11e9-8646-d663bd873d93');
-
- fixture.whenStable().then(() => {
- expect(router.navigate).toHaveBeenCalledWith(['/details/114e9ae4-4a32-11e9-8646-d663bd873d93']);
- });
- }));
-
- it('should handle error if no process instance id found', () => {
- spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: 'getProcessInstanceId error not found'}, status: 404}));
- component.getProcessInstanceId('e8a75940-4a32-11e9-8646-d663bd873d93');
- });
-
- it('should handle error when searchData.getSearchRequest returns an error', () => {
- spyOn(component.searchData, 'getSearchRequest').and.callFake(() => {
- return throwError(new Error('getSearchRequest error'));
- });
- component.makeCall();
- });
-
- it('should handle error when dataService.getBpmnInfraRequest returns an error', () => {
- spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest("965d3c92-44e0-11e9-b210-d663bd873d93", "85a7c354-44e0-11e9-b210-d663bd873d93", undefined, undefined, undefined, undefined, undefined, undefined, "ALL")));
- spyDataService.getBpmnInfraRequest.and.callFake(() => {
- return throwError(new Error('getBpmnInfraRequest error'));
- });
- component.makeCall();
- });
-
- it('should calculate statistics correctly', async(() => {
- let requestStatusTypes: string[] = ["COMPLETE", "IN_PROGRESS", "FAILED", "PENDING", "UNLOCKED"];
- let processArr: BpmnInfraRequest[] = [];
-
- // create 5 processes, one of each requestStatusType, with default time.
- requestStatusTypes.forEach((status) => {
- let serviceName = "service-" + status;
- var process = getProcess("85a7c354-44e0-11e9-b210-d663bd873d93", "965d3c92-44e0-11e9-b210-d663bd873d93", serviceName, "048a6212-44e1-11e9-b210-d663bd873d93", status, "TestType", undefined, undefined);
- processArr.push(process);
- })
-
- // search request has default filter.
- spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "ALL")));
- spyDataService.getBpmnInfraRequest.and.returnValue(of(processArr));
- component.makeCall();
-
- fixture.whenStable().then(() => {
- fixture.detectChanges();
-
- expect(
- component.totalVal === 5 && component.completeVal === 1 &&
- component.inProgressVal === 1 && component.failedVal === 1 &&
- component.pendingVal === 1 && component.unlockedVal === 1 &&
- component.percentageComplete === 20 &&
- component.percentageFailed === 20 &&
- component.percentageInProg === 20 &&
- component.percentagePending === 20 &&
- component.percentageUnlocked === 20)
- .toBeTruthy();
- });
- }));
-
- function getSearchRequest(selectedValueSII = "EQ", serviceInstanceIdVal: string, selectedValueRI = "EQ", requestIdVal: string, selectedValueSN = "EQ", serviceInstanceNameVal: string, startTimeInMilliseconds = 0, endTimeInMilliseconds = 4, selectedValueSTATUS?: string): SearchRequest {
- if (startTimeInMilliseconds > endTimeInMilliseconds) {
- console.error("End time cannot be greater than start time.");
- return undefined;
- }
- if (typeof selectedValueSTATUS === "string")
- return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal], requestStatus: ["EQ", selectedValueSTATUS] }, startTimeInMilliseconds, endTimeInMilliseconds);
- else
- return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal] }, startTimeInMilliseconds, endTimeInMilliseconds);
- }
-
- function getProcess(requestIdVal: string, serviceInstanceIdVal: string, serviceInstanceNameVal: string, networkIdVal: string, requestStatusVal: string, serviceTypeVal: string, startTimeVal = "1", endTimeVal = "2"): BpmnInfraRequest {
- return <BpmnInfraRequest>{ requestId: requestIdVal, serviceInstanceId: serviceInstanceIdVal, serviceInstanceName: serviceInstanceNameVal, networkId: networkIdVal, requestStatus: requestStatusVal, serviceType: serviceTypeVal, startTime: startTimeVal, endTime: endTimeVal };
- }
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.ts
deleted file mode 100644
index 01e6899b44..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com
-*/
-
-import { Component, OnInit, ViewChild, ElementRef, Input, ViewEncapsulation } from '@angular/core';
-import { DataService } from '../data.service';
-import { ActivatedRoute, Router } from "@angular/router";
-import { BpmnInfraRequest } from '../model/bpmnInfraRequest.model';
-import { ProcessInstanceId } from '../model/processInstanceId.model';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { MatSelectModule } from '@angular/material/select';
-import { FormsModule, FormControl } from '@angular/forms';
-import { SearchData } from '../model/searchData.model';
-import { MatDatepickerModule } from '@angular/material/datepicker';
-import { SearchRequest } from '../model/SearchRequest.model';
-import { NgxSpinnerService } from 'ngx-spinner';
-import { MatFormFieldModule, MatInputModule, MatPaginator, MatSort, MatTableDataSource } from '@angular/material';
-import { Constants } from './home.constant';
-
-@Component({
- selector: 'app-home',
- templateUrl: './home.component.html',
- styleUrls: ['./home.component.scss'],
- encapsulation: ViewEncapsulation.None
-})
-
-export class HomeComponent {
-
- totalVal = 0;
- completeVal = 0;
- inProgressVal = 0;
- failedVal = 0;
- pendingVal = 0;
- unlockedVal = 0;
- percentageComplete = 0;
- percentageFailed = 0;
- percentageInProg = 0;
- percentagePending = 0;
- percentageUnlocked = 0;
-
- options = Constants.OPTIONS;
- statusOptions = Constants.STATUS_OPTIONS;
- hourOptions = Constants.HOUR_OPTIONS;
- minuteOptions = Constants.MINUTE_OPTIONS;
- displayedColumns = Constants.DISPLAYED_COLUMNS;
- pageSizeOptions = Constants.DEFAULT_PAGE_SIZE_OPTIONS;
-
- searchData: SearchData;
- startingDate: Date;
- processData: MatTableDataSource<BpmnInfraRequest>;
-
- @ViewChild(MatPaginator) paginator: MatPaginator;
- @ViewChild(MatSort) sort: MatSort;
-
- constructor(private route: ActivatedRoute, private data: DataService,
- private router: Router, private popup: ToastrNotificationService,
- private spinner: NgxSpinnerService) {
- this.searchData = new SearchData();
- }
-
- makeCall() {
- this.spinner.show();
-
- var search = this.searchData.getSearchRequest().subscribe((result: SearchRequest) => {
-
- this.data.getBpmnInfraRequest(result.getFilters(), result.getStartTimeInMilliseconds(), result.getEndTimeInMilliseconds())
- .subscribe((data: BpmnInfraRequest[]) => {
- this.spinner.hide();
- var processData: BpmnInfraRequest[] = data;
- this.processData = new MatTableDataSource<BpmnInfraRequest>(processData);
- this.processData.sort = this.sort;
- this.processData.paginator = this.paginator;
- this.processData.paginator.firstPage();
-
- this.popup.info("Number of records found: " + data.length)
-
- // Calculate Statistics for Service Statistics tab
- this.completeVal = processData.filter(i => i.requestStatus === "COMPLETE").length;
- this.inProgressVal = processData.filter(i => i.requestStatus === "IN_PROGRESS").length;
- this.failedVal = processData.filter(i => i.requestStatus === "FAILED").length;
- this.pendingVal = processData.filter(i => i.requestStatus === "PENDING").length;
- this.unlockedVal = processData.filter(i => i.requestStatus === "UNLOCKED").length;
- this.totalVal = processData.length;
-
- // Calculate percentages to 2 decimal places and compare to 0 to avoid NaN error
- if (this.totalVal != 0) {
- this.percentageComplete = Math.round(((this.completeVal / this.totalVal) * 100) * 100) / 100;
- this.percentageFailed = Math.round(((this.failedVal / this.totalVal) * 100) * 100) / 100;
- this.percentageInProg = Math.round(((this.inProgressVal / this.totalVal) * 100) * 100) / 100;
- this.percentagePending = Math.round(((this.pendingVal / this.totalVal) * 100) * 100) / 100;
- this.percentageUnlocked = Math.round(((this.unlockedVal / this.totalVal) * 100) * 100) / 100;
- }
- console.log("COMPLETE: " + this.completeVal);
- console.log("FAILED: " + this.failedVal);
- }, error => {
- console.log(error);
- this.popup.error("Unable to perform search Error code:" + error.status);
- this.spinner.hide();
- });
- }, error => {
- console.log("Data validation error " + error);
- this.popup.error(error);
- this.spinner.hide();
- });
- }
-
- getProcessInstanceId(requestId: string) {
- this.spinner.show();
-
- var response = this.data.getProcessInstanceId(requestId).subscribe((data) => {
- if (data.status == 200) {
- this.spinner.hide();
- var processInstanceId = (data.body as ProcessInstanceId).processInstanceId;
- this.router.navigate(['/details/' + processInstanceId]);
- } else {
- this.popup.error('No process instance id found: ' + requestId);
- this.spinner.hide();
- console.log('No process instance id found: ' + requestId);
- }
- });
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.constant.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.constant.ts
deleted file mode 100644
index 72c98af3ce..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.constant.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2019 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: andrei.barcovschi@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export class Constants {
- public static OPTIONS = [{ name: "EQUAL", value: "EQ" }, { name: "NOT EQUAL", value: "NEQ" }, { name: "LIKE", value: "LIKE" }];
-
- public static STATUS_OPTIONS = [{ name: "ALL", value: "ALL" }, { name: "COMPLETE", value: "COMPLETE" }, { name: "IN_PROGRESS", value: "IN_PROGRESS" },
- { name: "FAILED", value: "FAILED" }, { name: "PENDING", value: "PENDING" }, { name: "UNLOCKED", value: "UNLOCKED" }];
-
- public static HOUR_OPTIONS = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11",
- "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"];
-
- public static MINUTE_OPTIONS = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15",
- "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35",
- "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55",
- "56", "57", "58", "59"];
-
- public static DISPLAYED_COLUMNS = ['requestId', 'serviceInstanceId', 'serviceInstanceName', 'networkId', 'requestStatus', 'serviceType', 'startTime', 'endTime'];
-
- public static DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.spec.ts
deleted file mode 100644
index 9be827a69d..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.spec.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { TestBed, inject } from '@angular/core/testing';
-
-import { HttpErrorHandlerService } from './http-error-handler.service';
-import { ToastrNotificationService } from './toastr-notification-service.service';
-
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {
- }
-}
-
-describe('HttpErrorHandlerService', () => {
- beforeEach(() => {
- TestBed.configureTestingModule({
- providers: [HttpErrorHandlerService,
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],
- });
- });
-
- it('ErrorHandler should be created', inject([HttpErrorHandlerService], (service: HttpErrorHandlerService) => {
- expect(service).toBeTruthy();
- }));
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.ts
deleted file mode 100644
index b22fa6ee9c..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/http-error-handler.service.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@est.tech, waqas.ikram@est.tech
-*/
-
-import { Injectable } from '@angular/core';
-import { ToastrNotificationService } from './toastr-notification-service.service';
-import { HttpErrorResponse } from '@angular/common/http';
-import { Observable, of, throwError } from 'rxjs';
-
-@Injectable({
- providedIn: 'root'
-})
-/** Handles HttpClient errors */
-export class HttpErrorHandlerService {
-
- constructor(private popup: ToastrNotificationService) { }
-
- handleError(operation = 'operation', url = 'url') {
- return (error: HttpErrorResponse) => {
- if (error.error instanceof ErrorEvent) {
- console.error('An error occurred:', error.error.message);
- this.popup.error("An error occurred for operation: " + operation + " using url: " + url + " Detail: " + error.error.message);
- return throwError("An error occurred for operation: " + operation);
- }
- if (error.status == 500 || error.status == 0) {
- this.popup.error("Internal Service Error occured for operation: " + operation + " please check backend service log. status code: " + error.status);
- }
- console.error(
- 'Backend returned status code: ', error.status + ' from URL ' + url);
- return throwError(error.error || "Internal Service Error occured for operation: " +
- operation + ". Please check backend service log. Status code: " + error.status);
- };
-
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/SearchRequest.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/SearchRequest.model.ts
deleted file mode 100644
index f68f164d0e..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/SearchRequest.model.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export class SearchRequest {
-
- constructor(private filter: {}, private startTimeInMilliseconds: number, private endTimeInMilliseconds: number) {
-
- }
-
-
- public getFilters(): {} {
- return this.filter;
- }
-
- public getStartTimeInMilliseconds(): number {
- return this.startTimeInMilliseconds;
- }
-
- public getEndTimeInMilliseconds(): number {
- return this.endTimeInMilliseconds;
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/activityInstance.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/activityInstance.model.ts
deleted file mode 100644
index 86831f25a7..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/activityInstance.model.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface ActivityInstance {
- activityId: string;
- activityName: string;
- activityType: string;
- processInstanceId: string;
- calledProcessInstanceId: string;
- startTime: string;
- endTime: string;
- durationInMillis: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/bpmnInfraRequest.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/bpmnInfraRequest.model.ts
deleted file mode 100644
index e25b06f4ac..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/bpmnInfraRequest.model.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface BpmnInfraRequest {
- requestId: string;
- serviceInstanceId: string;
- serviceInstanceName: string;
- networkId: string;
- requestStatus: string;
- serviceType: string;
- startTime: string;
- endTime: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processDefinition.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processDefinition.model.ts
deleted file mode 100644
index c9ce7feb3b..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processDefinition.model.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface ProcessDefinitionDetail {
- processDefinitionId: string;
- processDefinitionXml: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstance.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstance.model.ts
deleted file mode 100644
index 2187436ae7..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstance.model.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface ProcessInstanceDetail {
- processInstanceId: string;
- processDefinitionId: string;
- processDefinitionName: string;
- superProcessInstanceId: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstanceId.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstanceId.model.ts
deleted file mode 100644
index 662da2c7d6..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/processInstanceId.model.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface ProcessInstanceId {
- processInstanceId: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts
deleted file mode 100644
index 5323cce1fd..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: andrei.barcovschi@ericsson.com
-*/
-
-import { SearchData } from './searchData.model';
-import { SearchRequest } from './SearchRequest.model';
-import { Observable, throwError } from 'rxjs';
-
-describe('SearchData', () => {
- let searchRequest: SearchRequest;
- let searchData: SearchData;
-
- beforeEach(() => {
- searchData = new SearchData();
- });
-
- it('should return a SearchRequest observable with selectedValueSTATUS != ALL', () => { // NOT ALL CHANGE TEST TO TEST THIS ISNTESASD
- searchData.serviceInstanceId = "bd827d8c-4b07-11e9-8646-d663bd873d93";
- searchData.requestId = "cf1343d8-4b07-11e9-8646-d663bd873d93";
- searchData.serviceInstanceName = "service-123";
- searchData.selectedValueSTATUS = "COMPLETE";
-
- searchData.getSearchRequest().subscribe((request: SearchRequest) => {
- searchRequest = request;
- });
- let filters = searchRequest.getFilters();
- expect(searchRequest.getFilters()).toEqual({ serviceInstanceId: [ 'EQ', 'bd827d8c-4b07-11e9-8646-d663bd873d93' ],
- requestId: [ 'EQ', 'cf1343d8-4b07-11e9-8646-d663bd873d93' ],
- serviceInstanceName: [ 'EQ', 'service-123' ],
- requestStatus: [ 'EQ', 'COMPLETE' ]
- });
- expect(searchRequest.getStartTimeInMilliseconds()).toBe(searchData.startDate.getTime());
- expect(searchRequest.getEndTimeInMilliseconds()).toBe(searchData.endDate.getTime());
- });
-
- it('should throw an error if found incorrect start or end date', () => {
- searchData.startDate = null;
- searchData.endDate = undefined;
- searchData.getSearchRequest().subscribe({
- error: (err) => {
- expect(err).toEqual('Found end or start date empty, Please enter start and end date')
- }
- });
- });
-
- it('should throw an error if startTimeInMilliseconds > endTimeInMilliseconds', () => {
- searchData.startDate = new Date('March 20, 2019 02:00:00');
- searchData.endDate = new Date('March 20, 2019 01:00:00');
- searchData.selectedStartHour = '02';
- searchData.selectedEndHour = '01';
- searchData.selectedStartMinute = '00';
- searchData.selectedEndMinute = '00';
-
- searchData.getSearchRequest().subscribe({
- error: (err) => {
- expect(err).toEqual("End time: " + searchData.endDate + " can not be greater then start time: " + searchData.startDate)
- }
- });
- });
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.ts
deleted file mode 100644
index a948eb7cfe..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import { ToastrNotificationService } from "../toastr-notification-service.service";
-
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Observable, throwError, of } from 'rxjs';
-import { SearchRequest } from "./SearchRequest.model";
-import { Input } from "@angular/core";
-
-export class SearchData {
-
- @Input() selectedValueSII = "EQ";
- @Input() selectedValueRI = "EQ";
- @Input() selectedValueSN = "EQ";
- @Input() selectedValueSTATUS = "ALL";
-
- private now = Date.now();
- // Minus 1 hour from current time for start date
- @Input() startDate = new Date(this.now - (1 * 60 * 60 * 1000));
- @Input() selectedStartHour = this.getNumberAsString(this.startDate.getHours());
- @Input() selectedStartMinute = this.getNumberAsString(this.startDate.getMinutes());
-
- @Input() endDate = new Date(this.now);
- @Input() selectedEndHour = this.getNumberAsString(this.endDate.getHours());
- @Input() selectedEndMinute = this.getNumberAsString(this.endDate.getMinutes());
-
-
- @Input() serviceInstanceId: string;
- @Input() requestId: string;
- @Input() serviceInstanceName: string;
-
- private startTimeInMilliseconds: number;
- private endTimeInMilliseconds: number;
-
- constructor() {
- }
-
- public getSearchRequest(): Observable<SearchRequest> {
- var searchFields = {};
- if ((!this.startDate || this.startDate === null) || (!this.endDate || this.endDate === null)) {
- console.error("Found either start time or end time null or undefined");
- return throwError("Found end or start date empty, Please enter start and end date");
- }
-
- this.startDate.setHours(parseInt(this.selectedStartHour));
- this.startDate.setMinutes(parseInt(this.selectedStartMinute));
-
- this.endDate.setHours(parseInt(this.selectedEndHour));
- this.endDate.setMinutes(parseInt(this.selectedEndMinute));
-
- this.startTimeInMilliseconds = this.startDate.getTime();
- this.endTimeInMilliseconds = this.endDate.getTime();
-
- if (this.startTimeInMilliseconds > this.endTimeInMilliseconds) {
- console.error("End time: " + this.endDate + " can not be greater then start time: " + this.startDate);
- return throwError("End time: " + this.endDate + " can not be greater then start time: " + this.startDate);
- }
-
-
- if (!this.isEmpty(this.selectedValueSII) && !this.isEmpty(this.serviceInstanceId)) {
- searchFields["serviceInstanceId"] = [this.selectedValueSII, this.serviceInstanceId]
- }
- if (!this.isEmpty(this.selectedValueRI) && !this.isEmpty(this.requestId)) {
- searchFields["requestId"] = [this.selectedValueRI, this.requestId]
- }
- if (!this.isEmpty(this.selectedValueSN) && !this.isEmpty(this.serviceInstanceName)) {
- searchFields["serviceInstanceName"] = [this.selectedValueSN, this.serviceInstanceName]
- }
-
- if (!this.isEmpty(this.selectedValueSTATUS) && this.selectedValueSTATUS !== "ALL") {
- searchFields["requestStatus"] = ["EQ", this.selectedValueSTATUS]
- }
-
- return of(new SearchRequest(searchFields, this.startTimeInMilliseconds, this.endTimeInMilliseconds));
- }
-
- private isEmpty(str) {
- return (!str || 0 === str.length);
- }
-
- private getNumberAsString(num: number) {
- if (num <= 9) {
- return "0" + num;
- }
- return "" + num;
- }
-
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/variableInstance.model.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/variableInstance.model.ts
deleted file mode 100644
index a4a3a357ba..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/variableInstance.model.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-export interface VariableInstance {
- name: string;
- value: string;
- type: string;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html
deleted file mode 100644
index e8b54d7ae3..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
--->
-
-<nav>
- <ul>
- <li>
- <a routerLink="/">Home</a>
- </li>
- </ul>
-</nav>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.scss
deleted file mode 100644
index b1a2c654ee..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.scss
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-nav {
- background: #00285F;
- height: 100%;
- width: 90px;
-
- ul {
- list-style-type: none;
- padding: 0;
- margin: 0;
-
- li {
- a {
- color: #fff;
- padding: 20px;
- display: block;
- }
-
- .activated {
- background-color: #00a8ff;
- }
- }
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.spec.ts
deleted file mode 100644
index 5068c2593e..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.spec.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { SidebarComponent } from './sidebar.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { HttpClientModule } from '@angular/common/http';
-import { HttpTestingController } from '@angular/common/http/testing';
-import { HttpClient } from '@angular/common/http';
-import { inject } from '@angular/core/testing';
-import { RouterModule } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-
-describe('SidebarComponent', () => {
- let component: SidebarComponent;
- let fixture: ComponentFixture<SidebarComponent>;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- providers: [SidebarComponent, HttpClient, HttpTestingController, { provide: APP_BASE_HREF, useValue: '/' }],
- imports: [HttpClientModule, RouterModule.forRoot([])],
- declarations: [SidebarComponent],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(SidebarComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('component should be created', async(inject([HttpTestingController, SidebarComponent],
- (httpClient: HttpTestingController, sideComponent: SidebarComponent) => {
- expect(sideComponent).toBeTruthy();
- })));
-
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.ts
deleted file mode 100644
index e032bab637..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/sidebar/sidebar.component.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Component, OnInit } from '@angular/core';
-import { Router, NavigationEnd } from '@angular/router';
-
-@Component({
- selector: 'app-sidebar',
- templateUrl: './sidebar.component.html',
- styleUrls: ['./sidebar.component.scss']
-})
-
-export class SidebarComponent {
-
- currentUrl: string;
-
- constructor(private router: Router) {
- router.events.subscribe((_: NavigationEnd) => this.currentUrl = _.url);
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.crt b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.crt
deleted file mode 100644
index 7995c0e2c3..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.crt
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIUPVNQnCGr+uu048oN/oILqbk+DKwwDQYJKoZIhvcNAQEL
-BQAwgZ8xCzAJBgNVBAYTAkdCMQ8wDQYDVQQIDAZMb25kb24xDzANBgNVBAcMBkxv
-bmRvbjEYMBYGA1UECgwPTXkgT3JnYW5pc2F0aW9uMR8wHQYDVQQLDBZNeSBPcmdh
-bmlzYXRpb25hbCBVbml0MR8wHQYJKoZIhvcNAQkBFhBlbWFpbEBkb21haW4uY29t
-MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMjAwODA3MTIyMjM2WhcNMzAwNTA3MTIy
-MjM2WjCBnzELMAkGA1UEBhMCR0IxDzANBgNVBAgMBkxvbmRvbjEPMA0GA1UEBwwG
-TG9uZG9uMRgwFgYDVQQKDA9NeSBPcmdhbmlzYXRpb24xHzAdBgNVBAsMFk15IE9y
-Z2FuaXNhdGlvbmFsIFVuaXQxHzAdBgkqhkiG9w0BCQEWEGVtYWlsQGRvbWFpbi5j
-b20xEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAKCtMRhrl1o1obijVfREsIatq/fEiFETCtSx3mJVKjZjYNHFn2/OjvXo
-ncABnhKiFND8XiLYEgzDw9rtX3l2RVe9gQm2zNUvKPcmO+D4Dsn6QJu8HS7uDU8m
-gaXRiEUHsjD+jvEF/sUKjD565XRGd9qCyDpdtjra2W7CGZdzTrdepMRJhxMmA0fB
-t3JsV/52WMCqU6drSxT8hH7PvXh4nwr9DQ2fvUZarRptiW2Dg9zSqO+6M3XWCvUI
-jdm4Q0jxXY2jCLsh1oTo3dIYdHedB4LORXAPIRsLdJ1/ofl9NdyL20kG4ONIdJXv
-5mTuPGBATGOWEJvD8TTxrZtEMx9GNTsCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9j
-YWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQAIDUoitU/11f9ApfPXwtuDaPeX20sc
-gSfq/MLQ9LttSi/SpAjebSlp12JNkZvxuV+2cPmc92NWv8WXqfyP+0BDhlGTm1qp
-Hc/wRB9ASG/7Z1imAh+zpNXFe0fV0HpUqJx33ywiXLoMTTaSvwPSF4VEki8g9h2R
-8zVXjsaE0ybi4eUIKG+ZJ2EBaVgLMEm+osVMnkTEWIeR3XN66Ko2SegvOrAjfOyz
-CIqkDvPhowYkKVV4LSsFIgz+YKOVMxaEcHbrxciYKymmWQ/9I/ek8TUs8C4z6cKs
-n+9nvYisfFpZ6tpMU+cgYkGezOCV5+nAri+SHoAfAOMXVPLACT39sOF9
------END CERTIFICATE-----
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.key b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.key
deleted file mode 100644
index 85e6b7e09d..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/ssl/localhost.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCgrTEYa5daNaG4
-o1X0RLCGrav3xIhREwrUsd5iVSo2Y2DRxZ9vzo716J3AAZ4SohTQ/F4i2BIMw8Pa
-7V95dkVXvYEJtszVLyj3Jjvg+A7J+kCbvB0u7g1PJoGl0YhFB7Iw/o7xBf7FCow+
-euV0Rnfagsg6XbY62tluwhmXc063XqTESYcTJgNHwbdybFf+dljAqlOna0sU/IR+
-z714eJ8K/Q0Nn71GWq0abYltg4Pc0qjvujN11gr1CI3ZuENI8V2Nowi7IdaE6N3S
-GHR3nQeCzkVwDyEbC3Sdf6H5fTXci9tJBuDjSHSV7+Zk7jxgQExjlhCbw/E08a2b
-RDMfRjU7AgMBAAECggEAByszAY/rVM8HxCEleJyH87pT7d4K5vMejJbTATgjhgGx
-FCrpDif9IOOcBjEMSHCK1TgtSwiw5XjmiCIHHHg2Z8/ArhpF0U0lWsGN8l+e6UwN
-DeW6t5lPZrSlHCzZE5tgS+dPoVlPIKNz1mXNTv7F4i3rmQ8NTlrtUI/AbI1seanh
-Ofb2yhHkkiHYIUridCDTuhk9hMmypHB9THA7SFRB7C9/zO8T95I2D1QQ5ZO5xKGg
-rDAMacSeQMnuKNcyuF4RYoh0T4PmM1NFGH1F1+QKTAt5CU0rkZtMHZ9YuYPYCC1S
-f1YrPQSJ5mFstaF9kWDp1rnR2J8Od/KU5ZSOgmvMoQKBgQDUithsDxnGEOQCKXfX
-e6/kgaL7mB5Q/Pgeyiy5lyBjTLZcbFeaDzkRBR3zL5v8xbNZ4IsJqkaxJavrIwr4
-R2+WvuznEaeLhFds0ze57kDyV/uunsQwBSJSXYohCRiq1gc7nqpamSSpFFI9Ls81
-JmXSPdyosRWESjCTCrQffZFKhQKBgQDBh4VZ9lSAGfASKjkqGLncAEHcnCbavQoy
-2DlHEhA+gZDvR2CSsunIxlQerZC78KcTA+oex54Ovi+NG8Rx6qyyywxiGjm0e1yG
-B2z060CTO9PlMhs81kXJkUDxR4tHyMNtLaFKICJ9J6wZXBnYZcMU+Do7OhlRVoaL
-qrNwhonsvwKBgCCTq3pckim+mwQN0RWRGrOefxmrBjKJo4osmNBVbpxpvKXL4V12
-qduG+kE08ea7crL67LStiapLSN+AfoTxhhQH7Y25MgH7Zd8DPM5dy0yZ2bS5Fv75
-Onp/ZdWMbGB6757eweOjB3B28ef4zb+qw/6GhtTAV7jwGiPfhx4wg911AoGBAIAP
-1H82UK4/+6uZgyBHIl3hUbPRJKjkJOaGTEiqPFOQWz7rJY2NlMQF8U4nnjmvQm+D
-zJ23i/DHiyG9+R1EpCjf0f7sybiTVSNfsIrVTXLgSRRGNt3oEGAUnTvMEu9ae284
-nZ02bHwTD3/sgTHADPpIVAgzJuO69Odg+sKAVK5zAoGAVn6bUm+QVuELmn8CNT+y
-XsSks5gu0MDwuSbUwjuNjSGMEab2lwyIgY8CduopyJWLPgkVtALiuXxp6OzPNCE4
-pC/5HNaqawCQ7Kgbk6MjRwY551HQRgMG7wf9iFBP8sfdWG30vYFmiYWN4oUEDi5j
-ytwU+extcKSRxj/O1op3KDI=
------END PRIVATE KEY-----
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.spec.ts
deleted file mode 100644
index ceda3c9ea9..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.spec.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { TestBed, inject } from '@angular/core/testing';
-
-import { ToastrNotificationService } from './toastr-notification-service.service';
-
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {
- }
-}
-
-describe('ToastrNotificationService', () => {
- beforeEach(() => {
- TestBed.configureTestingModule({
- providers: [ToastrNotificationService,
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }]
- });
- });
-
- it('component should be created', inject([ToastrNotificationService], (service: ToastrNotificationService) => {
- expect(service).toBeTruthy();
- }));
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.ts
deleted file mode 100644
index 65870493a4..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/toastr-notification-service.service.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Injectable } from '@angular/core';
-declare var toastr: any
-@Injectable({
- providedIn: 'root'
-})
-export class ToastrNotificationService {
-
- constructor() { this.toastrSettings() }
-
- error(message: string) {
- toastr.error(message, "Error");
- }
-
- info(message: string) {
- toastr.info(message, "Info");
- }
-
- toastrSettings() {
- toastr.options = {
- "closeButton": false,
- "debug": false,
- "newestOnTop": false,
- "progressBar": false,
- "positionClass": "toast-bottom-full-width",
- "preventDuplicates": true,
- "onclick": null,
- "showDuration": "300",
- "hideDuration": "1000",
- "timeOut": "5000",
- "extendedTimeOut": "1000",
- "showEasing": "swing",
- "hideEasing": "linear",
- "showMethod": "fadeIn",
- "hideMethod": "fadeOut"
- }
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.html
deleted file mode 100644
index 93d9074df0..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
--->
-
-<nav>
- <h1><a class="navbar-brand">SO Monitoring</a></h1>
-</nav>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.scss
deleted file mode 100644
index d7e6d1b3f8..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.scss
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-.navbar-brand {
- display: inline;
- margin-right: 1rem;
- font-size: 1.25rem;
- line-height: inherit;
- white-space: nowrap;
-}
-
-nav {
- background: #00285F;
- height: 40px;
-
- ul {
- list-style-type: none;
- padding: 0;
- margin: 0;
-
- li {
- a {
- color: #fff;
- padding: 20px;
- display: block;
- }
-
- .activated {
- background-color: #00a8ff;
- }
- }
- }
-}
-
-h1 {
- color: white;
- text-indent: 90px;
- padding-top: 0;
- padding-bottom: 10px;
- font-size: 1.9rem;
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.spec.ts
deleted file mode 100644
index 3d402bf1e9..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.spec.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { TopbarComponent } from './topbar.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-
-describe('TopbarComponent', () => {
- let component: TopbarComponent;
- let fixture: ComponentFixture<TopbarComponent>;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [TopbarComponent],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(TopbarComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('component should be created', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.ts
deleted file mode 100644
index 2e6c90864d..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/topbar/topbar.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { Component, OnInit } from '@angular/core';
-
-@Component({
- selector: 'app-topbar',
- templateUrl: './topbar.component.html',
- styleUrls: ['./topbar.component.scss']
-})
-
-export class TopbarComponent {
-
- constructor() { }
-
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/assets/.gitkeep b/so-monitoring/so-monitoring-ui/src/main/frontend/src/assets/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/assets/.gitkeep
+++ /dev/null
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/browserslist b/so-monitoring/so-monitoring-ui/src/main/frontend/src/browserslist
deleted file mode 100644
index 3e851a0f67..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/browserslist
+++ /dev/null
@@ -1,9 +0,0 @@
-# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
-# For additional information regarding the format and rule options, please see:
-# https://github.com/browserslist/browserslist#queries
-# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
-> 0.5%
-last 2 versions
-Firefox ESR
-not dead
-# IE 9-11 \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.prod.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.prod.ts
deleted file mode 100644
index 0783a04c0d..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.prod.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const environment = {
- production: true
-};
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts
deleted file mode 100644
index bf2f31d5c9..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/environments/environment.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-
-export const environment = {
- production: false,
-
- soMonitoringBackendURL: 'https://so-monitoring:30224/so/monitoring/'
-};
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/favicon.png b/so-monitoring/so-monitoring-ui/src/main/frontend/src/favicon.png
deleted file mode 100644
index 2cdb98fe8e..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/favicon.png
+++ /dev/null
Binary files differ
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/index.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/index.html
deleted file mode 100644
index 999e7ce049..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
--->
-
-<!doctype html>
-<html lang="en">
-
-<head>
- <meta charset="utf-8">
- <title>SO Monitor</title>
- <base href="/">
-
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="icon" type="image/x-icon" href="favicon.png">
- <link href="https://fonts.googleapis.com/css?family=Montserrat:300,700" rel="stylesheet">
- <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
-
-</head>
-
-<body>
- <app-root></app-root>
-</body>
-
-</html>
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/karma.conf.js b/so-monitoring/so-monitoring-ui/src/main/frontend/src/karma.conf.js
deleted file mode 100644
index fee4a569fc..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/karma.conf.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Karma configuration file, see link for more information
-// https://karma-runner.github.io/1.0/config/configuration-file.html
-
-module.exports = function (config) {
- config.set({
- basePath: '',
- frameworks: ['jasmine', '@angular-devkit/build-angular'],
- plugins: [
- require('karma-jasmine'),
- require('karma-chrome-launcher'),
- require('karma-jasmine-html-reporter'),
- require('karma-coverage-istanbul-reporter'),
- require('@angular-devkit/build-angular/plugins/karma')
- ],
- client: {
- clearContext: false // leave Jasmine Spec Runner output visible in browser
- },
- coverageIstanbulReporter: {
- dir: require('path').join(__dirname, '../coverage'),
- reports: ['html', 'lcovonly'],
- fixWebpackSourcePaths: true
- },
- reporters: ['progress', 'kjhtml'],
- port: 9876,
- colors: true,
- logLevel: config.LOG_INFO,
- autoWatch: true,
- browsers: ['Chrome'],
- singleRun: false
- });
-}; \ No newline at end of file
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/main.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/main.ts
deleted file mode 100644
index e4b08c7059..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/main.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-
-if (environment.production) {
- enableProdMode();
-}
-
-platformBrowserDynamic().bootstrapModule(AppModule)
- .catch(err => console.log(err));
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/polyfills.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/polyfills.ts
deleted file mode 100644
index ba93849be3..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/polyfills.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
- * file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
- *
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
- */
-
-/***************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/weak-map';
-// import 'core-js/es6/set';
-
-/** IE10 and IE11 requires the following for NgClass support on SVG elements */
-// import 'classlist.js'; // Run `npm install --save classlist.js`.
-
-/** IE10 and IE11 requires the following for the Reflect API. */
-// import 'core-js/es6/reflect';
-
-
-/** Evergreen browsers require these. **/
-// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
-import 'core-js/es7/reflect';
-
-
-/**
- * Web Animations `@angular/platform-browser/animations`
- * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
- * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
- **/
-// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
-
-/**
- * By default, zone.js will patch all possible macroTask and DomEvents
- * user can disable parts of macroTask/DomEvents patch by setting following flags
- */
-
- // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
- // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
- // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
-
- /*
- * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
- * with the following flag, it will bypass `zone.js` patch for IE/Edge
- */
-// (window as any).__Zone_enable_cross_context_check = true;
-
-/***************************************************************************************************
- * Zone JS is required by default for Angular itself.
- */
-import 'zone.js/dist/zone'; // Included with Angular CLI.
-
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/styles.scss b/so-monitoring/so-monitoring-ui/src/main/frontend/src/styles.scss
deleted file mode 100644
index 4b80ed7609..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/styles.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; // @import '~bootstrap/dist/css/bootstrap.min.css';
-/* You can add global styles to this file, and also import other style files */
-
-body {
- margin: 0;
- background: #F2F2F2;
- font-family: 'Montserrat', sans-serif;
- height: 100vh;
-}
-
-#container {
- display: grid;
- grid-template-columns: 70px auto;
- height: 100%;
-
- #content {
- padding: 30px 50px;
-
- ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-
- li {
- background: #fff;
- border-radius: 8px;
- padding: 20px;
- margin-bottom: 8px;
-
- a {
- font-size: 1.5em;
- text-decoration: none;
- font-weight: bold;
- color: #00A8FF;
- }
-
- ul {
- margin-top: 20px;
-
- li {
- padding: 0;
-
- a {
- font-size: 1em;
- font-weight: 300;
- }
- }
- }
- }
- }
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/test.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/test.ts
deleted file mode 100644
index b8ade8cf66..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/test.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import 'zone.js/dist/zone-testing';
-import { getTestBed } from '@angular/core/testing';
-import {
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-declare const require: any;
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting()
-);
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.app.json b/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.app.json
deleted file mode 100644
index 722c370d58..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.app.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/app",
- "module": "es2015",
- "types": []
- },
- "exclude": [
- "src/test.ts",
- "**/*.spec.ts"
- ]
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.spec.json b/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.spec.json
deleted file mode 100644
index 8f7cedecab..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tsconfig.spec.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/spec",
- "module": "commonjs",
- "types": [
- "jasmine",
- "node"
- ]
- },
- "files": [
- "test.ts",
- "polyfills.ts"
- ],
- "include": [
- "**/*.spec.ts",
- "**/*.d.ts"
- ]
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tslint.json b/so-monitoring/so-monitoring-ui/src/main/frontend/src/tslint.json
deleted file mode 100644
index 52e2c1a5a7..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/tslint.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "extends": "../tslint.json",
- "rules": {
- "directive-selector": [
- true,
- "attribute",
- "app",
- "camelCase"
- ],
- "component-selector": [
- true,
- "element",
- "app",
- "kebab-case"
- ]
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/tsconfig.json b/so-monitoring/so-monitoring-ui/src/main/frontend/tsconfig.json
deleted file mode 100644
index ef44e2862b..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "compileOnSave": false,
- "compilerOptions": {
- "baseUrl": "./",
- "outDir": "./dist/out-tsc",
- "sourceMap": true,
- "declaration": false,
- "moduleResolution": "node",
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "target": "es5",
- "typeRoots": [
- "node_modules/@types"
- ],
- "lib": [
- "es2017",
- "dom"
- ]
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/tslint.json b/so-monitoring/so-monitoring-ui/src/main/frontend/tslint.json
deleted file mode 100644
index 3ea984c776..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/tslint.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "rulesDirectory": [
- "node_modules/codelyzer"
- ],
- "rules": {
- "arrow-return-shorthand": true,
- "callable-types": true,
- "class-name": true,
- "comment-format": [
- true,
- "check-space"
- ],
- "curly": true,
- "deprecation": {
- "severity": "warn"
- },
- "eofline": true,
- "forin": true,
- "import-blacklist": [
- true,
- "rxjs/Rx"
- ],
- "import-spacing": true,
- "indent": [
- true,
- "spaces"
- ],
- "interface-over-type-literal": true,
- "label-position": true,
- "max-line-length": [
- true,
- 140
- ],
- "member-access": false,
- "member-ordering": [
- true,
- {
- "order": [
- "static-field",
- "instance-field",
- "static-method",
- "instance-method"
- ]
- }
- ],
- "no-arg": true,
- "no-bitwise": true,
- "no-console": [
- true,
- "debug",
- "info",
- "time",
- "timeEnd",
- "trace"
- ],
- "no-construct": true,
- "no-debugger": true,
- "no-duplicate-super": true,
- "no-empty": false,
- "no-empty-interface": true,
- "no-eval": true,
- "no-inferrable-types": [
- true,
- "ignore-params"
- ],
- "no-misused-new": true,
- "no-non-null-assertion": true,
- "no-shadowed-variable": true,
- "no-string-literal": false,
- "no-string-throw": true,
- "no-switch-case-fall-through": true,
- "no-trailing-whitespace": true,
- "no-unnecessary-initializer": true,
- "no-unused-expression": true,
- "no-use-before-declare": true,
- "no-var-keyword": true,
- "object-literal-sort-keys": false,
- "one-line": [
- true,
- "check-open-brace",
- "check-catch",
- "check-else",
- "check-whitespace"
- ],
- "prefer-const": true,
- "quotemark": [
- true,
- "single"
- ],
- "radix": true,
- "semicolon": [
- true,
- "always"
- ],
- "triple-equals": [
- true,
- "allow-null-check"
- ],
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- }
- ],
- "unified-signatures": true,
- "variable-name": false,
- "whitespace": [
- true,
- "check-branch",
- "check-decl",
- "check-operator",
- "check-separator",
- "check-type"
- ],
- "no-output-on-prefix": true,
- "use-input-property-decorator": true,
- "use-output-property-decorator": true,
- "use-host-property-decorator": true,
- "no-input-rename": true,
- "no-output-rename": true,
- "use-life-cycle-interface": true,
- "use-pipe-transform-interface": true,
- "component-class-suffix": true,
- "directive-class-suffix": true
- }
-}
diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock b/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock
deleted file mode 100644
index 7ecbb03ae7..0000000000
--- a/so-monitoring/so-monitoring-ui/src/main/frontend/yarn.lock
+++ /dev/null
@@ -1,6651 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@angular-devkit/architect@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.6.8.tgz#977acc605aba45d21b95ca704cc99492e14299dd"
- dependencies:
- "@angular-devkit/core" "0.6.8"
- rxjs "^6.0.0"
-
-"@angular-devkit/build-angular@~0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz#ea108509f970efc9cd9087a47894c0164dd2d0c0"
- dependencies:
- "@angular-devkit/architect" "0.6.8"
- "@angular-devkit/build-optimizer" "0.6.8"
- "@angular-devkit/core" "0.6.8"
- "@ngtools/webpack" "6.0.8"
- ajv "~6.4.0"
- autoprefixer "^8.4.1"
- cache-loader "^1.2.2"
- chalk "~2.2.2"
- circular-dependency-plugin "^5.0.2"
- clean-css "^4.1.11"
- copy-webpack-plugin "^4.5.1"
- file-loader "^1.1.11"
- glob "^7.0.3"
- html-webpack-plugin "^3.0.6"
- istanbul "^0.4.5"
- istanbul-instrumenter-loader "^3.0.1"
- karma-source-map-support "^1.2.0"
- less "^3.0.4"
- less-loader "^4.1.0"
- license-webpack-plugin "^1.3.1"
- lodash "^4.17.4"
- memory-fs "^0.4.1"
- mini-css-extract-plugin "~0.4.0"
- minimatch "^3.0.4"
- opn "^5.1.0"
- parse5 "^4.0.0"
- portfinder "^1.0.13"
- postcss "^6.0.22"
- postcss-import "^11.1.0"
- postcss-loader "^2.1.5"
- postcss-url "^7.3.2"
- raw-loader "^0.5.1"
- resolve "^1.5.0"
- rxjs "^6.0.0"
- sass-loader "^7.0.1"
- silent-error "^1.1.0"
- source-map-support "^0.5.0"
- stats-webpack-plugin "^0.6.2"
- style-loader "^0.21.0"
- stylus "^0.54.5"
- stylus-loader "^3.0.2"
- tree-kill "^1.2.0"
- uglifyjs-webpack-plugin "^1.2.5"
- url-loader "^1.0.1"
- webpack "~4.8.1"
- webpack-dev-middleware "^3.1.3"
- webpack-dev-server "^3.1.4"
- webpack-merge "^4.1.2"
- webpack-sources "^1.1.0"
- webpack-subresource-integrity "^1.1.0-rc.4"
- optionalDependencies:
- node-sass "^4.9.0"
-
-"@angular-devkit/build-optimizer@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz#9e18a4f447290d3a8e32df1110aac8b98b80dec2"
- dependencies:
- loader-utils "^1.1.0"
- source-map "^0.5.6"
- typescript "~2.9.1"
- webpack-sources "^1.1.0"
-
-"@angular-devkit/core@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.6.8.tgz#3b09d97bd2588f0091df11921f7ed772431806aa"
- dependencies:
- ajv "~6.4.0"
- chokidar "^2.0.3"
- rxjs "^6.0.0"
- source-map "^0.5.6"
-
-"@angular-devkit/schematics@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.6.8.tgz#6360a0271f1f422862bf932a03b3741e76ac5ff0"
- dependencies:
- "@angular-devkit/core" "0.6.8"
- rxjs "^6.0.0"
-
-"@angular/animations@^6.1.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.1.3.tgz#c7b1cf407e5087a499532999cb412a546f9ba855"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/cdk@^6.4.5":
- version "6.4.6"
- resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-6.4.6.tgz#478ec4010b193a0fb4c246768af4ab6854799a49"
- dependencies:
- tslib "^1.7.1"
-
-"@angular/cli@~6.0.8":
- version "6.0.8"
- resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.0.8.tgz#65070958b944be30053232c51f8449b7ddd4d92a"
- dependencies:
- "@angular-devkit/architect" "0.6.8"
- "@angular-devkit/core" "0.6.8"
- "@angular-devkit/schematics" "0.6.8"
- "@schematics/angular" "0.6.8"
- "@schematics/update" "0.6.8"
- opn "~5.3.0"
- resolve "^1.1.7"
- rxjs "^6.0.0"
- semver "^5.1.0"
- silent-error "^1.0.0"
- symbol-observable "^1.2.0"
- yargs-parser "^10.0.0"
-
-"@angular/common@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.1.3.tgz#ae3d45224348fd8b682c104ced6345e7bd7e2a64"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/compiler-cli@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.1.3.tgz#f8454d140b875454a9e58944a008ee2592638700"
- dependencies:
- chokidar "^1.4.2"
- minimist "^1.2.0"
- reflect-metadata "^0.1.2"
- tsickle "^0.32.1"
-
-"@angular/compiler@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.1.3.tgz#a02efd29e70bb7d1230ca877f9c720518bdf364c"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/core@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.1.3.tgz#6561ba0b40a12758e5237fc05186b56d6d0bdbc9"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/forms@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.1.3.tgz#92ff08518bafae3c6a8019ac55dada3a9b2f0232"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/http@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.1.3.tgz#0012e83ff6016f01245295b3b05723be9ca43da7"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/language-service@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-6.1.3.tgz#d8ddf7eabfe39b2f5922893a4ae71c3b9c93b4f1"
-
-"@angular/material@^6.4.5":
- version "6.4.6"
- resolved "https://registry.yarnpkg.com/@angular/material/-/material-6.4.6.tgz#30c3dd83173f42a1df28db084930f242706d323a"
- dependencies:
- tslib "^1.7.1"
- optionalDependencies:
- parse5 "^5.0.0"
-
-"@angular/platform-browser-dynamic@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.3.tgz#108c42b7eeee57325b686008323d8ddc46addd8c"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/platform-browser@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.1.3.tgz#b918dfd05250e47c650dfe70f65173c65caaab91"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/router@^6.0.3":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.1.3.tgz#c11d4b9a9bfaa21d11c2464c82639f6dac3e8170"
- dependencies:
- tslib "^1.9.0"
-
-"@ngtools/webpack@6.0.8":
- version "6.0.8"
- resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.0.8.tgz#a05bce526aee9da62bb230a95fba83fee99d0bca"
- dependencies:
- "@angular-devkit/core" "0.6.8"
- tree-kill "^1.0.0"
- webpack-sources "^1.1.0"
-
-"@schematics/angular@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.6.8.tgz#a8d1afc33e77160296b0a8b3d02f0ee4dfe9d1d2"
- dependencies:
- "@angular-devkit/core" "0.6.8"
- "@angular-devkit/schematics" "0.6.8"
- typescript ">=2.6.2 <2.8"
-
-"@schematics/update@0.6.8":
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.6.8.tgz#3b4f897dd3b28335acc53a49d9f0dc10ebd934a7"
- dependencies:
- "@angular-devkit/core" "0.6.8"
- "@angular-devkit/schematics" "0.6.8"
- npm-registry-client "^8.5.1"
- rxjs "^6.0.0"
- semver "^5.3.0"
- semver-intersect "^1.1.2"
-
-"@types/jasmine@*", "@types/jasmine@~2.8.6":
- version "2.8.8"
- resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9"
-
-"@types/jasminewd2@~2.0.3":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95"
- dependencies:
- "@types/jasmine" "*"
-
-"@types/node@^6.0.46":
- version "6.0.116"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.116.tgz#2f9cd62b4ecc4927e3942e2655c182eecf5b45f1"
-
-"@types/node@~8.9.4":
- version "8.9.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.5.tgz#162b864bc70be077e6db212b322754917929e976"
-
-"@types/q@^0.0.32":
- version "0.0.32"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
-
-"@types/selenium-webdriver@^3.0.0":
- version "3.0.10"
- resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz#e98cc6f05b4b436277671c784ee2f9d05a634f9b"
-
-"@webassemblyjs/ast@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a"
- dependencies:
- "@webassemblyjs/helper-wasm-bytecode" "1.4.3"
- "@webassemblyjs/wast-parser" "1.4.3"
- debug "^3.1.0"
- webassemblyjs "1.4.3"
-
-"@webassemblyjs/floating-point-hex-parser@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz#f5aee4c376a717c74264d7bacada981e7e44faad"
-
-"@webassemblyjs/helper-buffer@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz#0434b55958519bf503697d3824857b1dea80b729"
- dependencies:
- debug "^3.1.0"
-
-"@webassemblyjs/helper-code-frame@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz#f1349ca3e01a8e29ee2098c770773ef97af43641"
- dependencies:
- "@webassemblyjs/wast-printer" "1.4.3"
-
-"@webassemblyjs/helper-fsm@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz#65a921db48fb43e868f17b27497870bdcae22b79"
-
-"@webassemblyjs/helper-wasm-bytecode@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz#0e5b4b5418e33f8a26e940b7809862828c3721a5"
-
-"@webassemblyjs/helper-wasm-section@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz#9ceedd53a3f152c3412e072887ade668d0b1acbf"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/helper-buffer" "1.4.3"
- "@webassemblyjs/helper-wasm-bytecode" "1.4.3"
- "@webassemblyjs/wasm-gen" "1.4.3"
- debug "^3.1.0"
-
-"@webassemblyjs/leb128@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.3.tgz#5a5e5949dbb5adfe3ae95664d0439927ac557fb8"
- dependencies:
- leb "^0.3.0"
-
-"@webassemblyjs/validation@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.3.tgz#9e66c9b3079d7bbcf2070c1bf52a54af2a09aac9"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
-
-"@webassemblyjs/wasm-edit@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz#87febd565e0ffb5ae25f6495bb3958d17aa0a779"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/helper-buffer" "1.4.3"
- "@webassemblyjs/helper-wasm-bytecode" "1.4.3"
- "@webassemblyjs/helper-wasm-section" "1.4.3"
- "@webassemblyjs/wasm-gen" "1.4.3"
- "@webassemblyjs/wasm-opt" "1.4.3"
- "@webassemblyjs/wasm-parser" "1.4.3"
- "@webassemblyjs/wast-printer" "1.4.3"
- debug "^3.1.0"
-
-"@webassemblyjs/wasm-gen@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz#8553164d0154a6be8f74d653d7ab355f73240aa4"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/helper-wasm-bytecode" "1.4.3"
- "@webassemblyjs/leb128" "1.4.3"
-
-"@webassemblyjs/wasm-opt@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz#26c7a23bfb136aa405b1d3410e63408ec60894b8"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/helper-buffer" "1.4.3"
- "@webassemblyjs/wasm-gen" "1.4.3"
- "@webassemblyjs/wasm-parser" "1.4.3"
- debug "^3.1.0"
-
-"@webassemblyjs/wasm-parser@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz#7ddd3e408f8542647ed612019cfb780830993698"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/helper-wasm-bytecode" "1.4.3"
- "@webassemblyjs/leb128" "1.4.3"
- "@webassemblyjs/wasm-parser" "1.4.3"
- webassemblyjs "1.4.3"
-
-"@webassemblyjs/wast-parser@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/floating-point-hex-parser" "1.4.3"
- "@webassemblyjs/helper-code-frame" "1.4.3"
- "@webassemblyjs/helper-fsm" "1.4.3"
- long "^3.2.0"
- webassemblyjs "1.4.3"
-
-"@webassemblyjs/wast-printer@1.4.3":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz#3d59aa8d0252d6814a3ef4e6d2a34c9ded3904e0"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/wast-parser" "1.4.3"
- long "^3.2.0"
-
-"@webpack-contrib/schema-utils@^1.0.0-beta.0":
- version "1.0.0-beta.0"
- resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65"
- dependencies:
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
- chalk "^2.3.2"
- strip-ansi "^4.0.0"
- text-table "^0.2.0"
- webpack-log "^1.1.2"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-
-abbrev@1.0.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
-
-accepts@1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
- dependencies:
- mime-types "~2.1.11"
- negotiator "0.6.1"
-
-accepts@~1.3.4, accepts@~1.3.5:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
- dependencies:
- mime-types "~2.1.18"
- negotiator "0.6.1"
-
-acorn-dynamic-import@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
- dependencies:
- acorn "^5.0.0"
-
-acorn@^5.0.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
-
-adm-zip@^0.4.9:
- version "0.4.11"
- resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a"
-
-after@0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
-
-agent-base@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
- dependencies:
- es6-promisify "^5.0.0"
-
-ajv-errors@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59"
-
-ajv-keywords@^3.1.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
-
-ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0:
- version "5.5.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
- dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
-
-ajv@^6.1.0:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9"
- dependencies:
- fast-deep-equal "^2.0.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-ajv@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6"
- dependencies:
- fast-deep-equal "^1.0.0"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
- uri-js "^3.0.2"
-
-align-text@^0.1.1, align-text@^0.1.3:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
- dependencies:
- kind-of "^3.0.2"
- longest "^1.0.1"
- repeat-string "^1.5.2"
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
-ansi-html@0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-
-ansi-styles@^3.1.0, ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- dependencies:
- color-convert "^1.9.0"
-
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
- dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
-
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
-app-root-path@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a"
-
-append-transform@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
- dependencies:
- default-require-extensions "^2.0.0"
-
-aproba@^1.0.3, aproba@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- dependencies:
- arr-flatten "^1.0.1"
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-
-arr-flatten@^1.0.1, arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
-
-array-flatten@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
-
-array-includes@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.7.0"
-
-array-slice@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
-
-array-union@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
- dependencies:
- array-uniq "^1.0.1"
-
-array-uniq@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
-
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-
-arraybuffer.slice@0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
-
-arrify@^1.0.0, arrify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-
-asap@~2.0.3:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
-
-asn1.js@^4.0.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-asn1@~0.2.3:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
-assert@^1.1.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
- dependencies:
- util "0.10.3"
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-async-foreach@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
-
-async@1.x, async@^1.4.0, async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-
-async@^2.1.4:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
- dependencies:
- lodash "^4.17.10"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-
-atob@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-
-autoprefixer@^8.4.1:
- version "8.6.5"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9"
- dependencies:
- browserslist "^3.2.8"
- caniuse-lite "^1.0.30000864"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^6.0.23"
- postcss-value-parser "^3.2.3"
-
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
-
-aws4@^1.6.0, aws4@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
-
-babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
-babel-generator@^6.18.0:
- version "6.26.1"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
- dependencies:
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- detect-indent "^4.0.0"
- jsesc "^1.3.0"
- lodash "^4.17.4"
- source-map "^0.5.7"
- trim-right "^1.0.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-runtime@^6.22.0, babel-runtime@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
- dependencies:
- core-js "^2.4.0"
- regenerator-runtime "^0.11.0"
-
-babel-template@^6.16.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
- dependencies:
- babel-runtime "^6.26.0"
- babel-traverse "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- lodash "^4.17.4"
-
-babel-traverse@^6.18.0, babel-traverse@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
- dependencies:
- babel-code-frame "^6.26.0"
- babel-messages "^6.23.0"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- babylon "^6.18.0"
- debug "^2.6.8"
- globals "^9.18.0"
- invariant "^2.2.2"
- lodash "^4.17.4"
-
-babel-types@^6.18.0, babel-types@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
- dependencies:
- babel-runtime "^6.26.0"
- esutils "^2.0.2"
- lodash "^4.17.4"
- to-fast-properties "^1.0.3"
-
-babylon@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
-
-backo2@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-base64-arraybuffer@0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
-
-base64-js@^1.0.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
-
-base64id@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
-batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- dependencies:
- tweetnacl "^0.14.3"
-
-better-assert@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
- dependencies:
- callsite "1.0.0"
-
-big.js@^3.1.3:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
-
-binary-extensions@^1.0.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
-
-blob@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
-
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- dependencies:
- inherits "~2.0.0"
-
-blocking-proxy@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2"
- dependencies:
- minimist "^1.2.0"
-
-bluebird@^3.3.0, bluebird@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
-
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
-
-body-parser@1.18.2:
- version "1.18.2"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
- dependencies:
- bytes "3.0.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.1"
- http-errors "~1.6.2"
- iconv-lite "0.4.19"
- on-finished "~2.3.0"
- qs "6.5.1"
- raw-body "2.3.2"
- type-is "~1.6.15"
-
-body-parser@^1.16.1:
- version "1.18.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
- dependencies:
- bytes "3.0.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "~1.6.3"
- iconv-lite "0.4.23"
- on-finished "~2.3.0"
- qs "6.5.2"
- raw-body "2.3.3"
- type-is "~1.6.16"
-
-bonjour@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
- dependencies:
- array-flatten "^2.1.0"
- deep-equal "^1.0.1"
- dns-equal "^1.0.0"
- dns-txt "^2.0.2"
- multicast-dns "^6.0.1"
- multicast-dns-service-types "^1.1.0"
-
-boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
-
-bootstrap@^4.1.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.3.tgz#0eb371af2c8448e8c210411d0cb824a6409a12be"
-
-bpmn-font@^0.8.0:
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/bpmn-font/-/bpmn-font-0.8.0.tgz#85b18715faede345cd33c8a48f50bbe557ff76c2"
-
-bpmn-js@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/bpmn-js/-/bpmn-js-2.4.1.tgz#7e1530f54e0848959ec84789ca11eaac672eab6f"
- dependencies:
- bpmn-font "^0.8.0"
- bpmn-moddle "^5.1.5"
- css.escape "^1.5.1"
- diagram-js "^2.5.1"
- diagram-js-direct-editing "^1.3.0"
- ids "^0.2.0"
- inherits "^2.0.1"
- min-dash "^3.0.0"
- min-dom "^3.0.0"
- object-refs "^0.3.0"
- tiny-svg "^2.0.0"
-
-bpmn-moddle@^5.1.5:
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/bpmn-moddle/-/bpmn-moddle-5.1.5.tgz#cfbd8be1beb0d7dd10c998db7616f2615265823a"
- dependencies:
- min-dash "^3.0.0"
- moddle "^4.1.0"
- moddle-xml "^7.2.3"
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^0.1.2:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
- dependencies:
- expand-range "^0.1.0"
-
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
-braces@^2.3.0, braces@^2.3.1:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
-brorand@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
- dependencies:
- buffer-xor "^1.0.3"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.3"
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-browserify-cipher@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
- dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-browserify-rsa@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
- dependencies:
- bn.js "^4.1.0"
- randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
-
-browserify-zlib@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
- dependencies:
- pako "~1.0.5"
-
-browserslist@^3.2.8:
- version "3.2.8"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
- dependencies:
- caniuse-lite "^1.0.30000844"
- electron-to-chromium "^1.3.47"
-
-browserstack@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.1.tgz#e2dfa66ffee940ebad0a07f7e00fd4687c455d66"
- dependencies:
- https-proxy-agent "^2.2.1"
-
-buffer-alloc-unsafe@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
-
-buffer-alloc@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
- dependencies:
- buffer-alloc-unsafe "^1.1.0"
- buffer-fill "^1.0.0"
-
-buffer-fill@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
-
-buffer-from@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-
-buffer-indexof@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
-
-buffer-xor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
-
-buffer@^4.3.0:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
- isarray "^1.0.0"
-
-builtin-modules@^1.0.0, builtin-modules@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-
-builtins@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
-
-bytes@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
-
-cacache@^10.0.4:
- version "10.0.4"
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
- dependencies:
- bluebird "^3.5.1"
- chownr "^1.0.1"
- glob "^7.1.2"
- graceful-fs "^4.1.11"
- lru-cache "^4.1.1"
- mississippi "^2.0.0"
- mkdirp "^0.5.1"
- move-concurrently "^1.0.1"
- promise-inflight "^1.0.1"
- rimraf "^2.6.2"
- ssri "^5.2.4"
- unique-filename "^1.1.0"
- y18n "^4.0.0"
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
-cache-loader@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5"
- dependencies:
- loader-utils "^1.1.0"
- mkdirp "^0.5.1"
- neo-async "^2.5.0"
- schema-utils "^0.4.2"
-
-callsite@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
-
-camel-case@3.0.x:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
- dependencies:
- no-case "^2.2.0"
- upper-case "^1.1.1"
-
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
-
-camelcase@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-
-camelcase@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
-
-caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864:
- version "1.0.30000878"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz#c644c39588dd42d3498e952234c372e5a40a4123"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-
-center-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
- dependencies:
- align-text "^0.1.3"
- lazy-cache "^1.0.3"
-
-chalk@^1.1.1, chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
-
-chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@~2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb"
- dependencies:
- ansi-styles "^3.1.0"
- escape-string-regexp "^1.0.5"
- supports-color "^4.0.0"
-
-chokidar@^1.4.1, chokidar@^1.4.2:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^2.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
-chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.0"
- braces "^2.3.0"
- glob-parent "^3.1.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- lodash.debounce "^4.0.8"
- normalize-path "^2.1.1"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- upath "^1.0.5"
- optionalDependencies:
- fsevents "^1.2.2"
-
-chownr@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
-
-chrome-trace-event@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084"
-
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-circular-dependency-plugin@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef"
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-clean-css@4.2.x, clean-css@^4.1.11:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
- dependencies:
- source-map "~0.6.0"
-
-cliui@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
- dependencies:
- center-align "^0.1.1"
- right-align "^0.1.1"
- wordwrap "0.0.2"
-
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
-cliui@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
- dependencies:
- string-width "^2.1.1"
- strip-ansi "^4.0.0"
- wrap-ansi "^2.0.0"
-
-clone-deep@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
- dependencies:
- for-own "^1.0.0"
- is-plain-object "^2.0.4"
- kind-of "^6.0.0"
- shallow-clone "^1.0.0"
-
-clone@^2.1.1, clone@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
-
-closest@*, closest@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/closest/-/closest-0.0.1.tgz#26da6f80b3e0e17e71f80f12782819e9f653495c"
- dependencies:
- matches-selector "0.0.1"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-codelyzer@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.2.1.tgz#d56eaacefca7e8138aac0a630e484bdb09988544"
- dependencies:
- app-root-path "^2.0.1"
- css-selector-tokenizer "^0.7.0"
- cssauron "^1.4.0"
- semver-dsl "^1.0.1"
- source-map "^0.5.6"
- sprintf-js "^1.0.3"
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-color-convert@^1.9.0:
- version "1.9.2"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147"
- dependencies:
- color-name "1.1.1"
-
-color-name@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
-
-colors@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-
-colors@^1.1.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d"
-
-combine-lists@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
- dependencies:
- lodash "^4.5.0"
-
-combined-stream@1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@2.17.x, commander@^2.12.1:
- version "2.17.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
-
-commander@~2.13.0:
- version "2.13.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
-
-commander@~2.16.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50"
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-
-compare-versions@^3.1.0:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.1.tgz#1ede3172b713c15f7c7beb98cb74d2d82576dad3"
-
-component-bind@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
-
-component-emitter@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
-
-component-emitter@1.2.1, component-emitter@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-
-component-event@*:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/component-event/-/component-event-0.2.0.tgz#8689a7c25a7dd0afe7e2e8408091d5b9e12ce196"
-
-component-event@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/component-event/-/component-event-0.1.4.tgz#3de78fc28782381787e24bf2a7c536bf0142c9b4"
-
-component-inherit@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
-
-compressible@~2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
- dependencies:
- mime-db ">= 1.34.0 < 2"
-
-compression@^1.5.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
- dependencies:
- accepts "~1.3.5"
- bytes "3.0.0"
- compressible "~2.0.14"
- debug "2.6.9"
- on-headers "~1.0.1"
- safe-buffer "5.1.2"
- vary "~1.1.2"
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-concat-stream@^1.5.0, concat-stream@^1.5.2:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
-connect-history-api-fallback@^1.3.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
-
-connect@^3.6.0:
- version "3.6.6"
- resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524"
- dependencies:
- debug "2.6.9"
- finalhandler "1.1.0"
- parseurl "~1.3.2"
- utils-merge "1.0.1"
-
-console-browserify@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
- dependencies:
- date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-
-constants-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-
-content-disposition@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
-
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-
-convert-source-map@^1.5.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5"
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
-
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
-
-copy-concurrently@^1.0.0:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
- dependencies:
- aproba "^1.1.1"
- fs-write-stream-atomic "^1.0.8"
- iferr "^0.1.5"
- mkdirp "^0.5.1"
- rimraf "^2.5.4"
- run-queue "^1.0.0"
-
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-
-copy-webpack-plugin@^4.5.1:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c"
- dependencies:
- cacache "^10.0.4"
- find-cache-dir "^1.0.0"
- globby "^7.1.1"
- is-glob "^4.0.0"
- loader-utils "^1.1.0"
- minimatch "^3.0.4"
- p-limit "^1.0.0"
- serialize-javascript "^1.4.0"
-
-core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.4:
- version "2.5.7"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
-
-core-js@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65"
-
-core-util-is@1.0.2, core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-cosmiconfig@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
- dependencies:
- is-directory "^0.3.1"
- js-yaml "^3.9.0"
- parse-json "^4.0.0"
- require-from-string "^2.0.1"
-
-create-ecdh@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.0.0"
-
-create-hash@^1.1.0, create-hash@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
- dependencies:
- cipher-base "^1.0.1"
- inherits "^2.0.1"
- md5.js "^1.3.4"
- ripemd160 "^2.0.1"
- sha.js "^2.4.0"
-
-create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
- dependencies:
- cipher-base "^1.0.3"
- create-hash "^1.1.0"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-cross-spawn@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
- dependencies:
- lru-cache "^4.0.1"
- which "^1.2.9"
-
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- dependencies:
- lru-cache "^4.0.1"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-crypto-browserify@^3.11.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
- dependencies:
- browserify-cipher "^1.0.0"
- browserify-sign "^4.0.0"
- create-ecdh "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.0"
- diffie-hellman "^5.0.0"
- inherits "^2.0.1"
- pbkdf2 "^3.0.3"
- public-encrypt "^4.0.0"
- randombytes "^2.0.0"
- randomfill "^1.0.3"
-
-css-parse@1.7.x:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
-
-css-select@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
- dependencies:
- boolbase "~1.0.0"
- css-what "2.1"
- domutils "1.5.1"
- nth-check "~1.0.1"
-
-css-selector-tokenizer@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
- dependencies:
- cssesc "^0.1.0"
- fastparse "^1.1.1"
- regexpu-core "^1.0.0"
-
-css-what@2.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
-
-css.escape@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
-
-cssauron@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8"
- dependencies:
- through X.X.X
-
-cssesc@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
-
-cuint@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
-
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- dependencies:
- array-find-index "^1.0.1"
-
-custom-event@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
-
-cyclist@~0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
-
-d@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
- dependencies:
- es5-ext "^0.10.9"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- dependencies:
- assert-plus "^1.0.0"
-
-date-now@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-
-debug@*, debug@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
- dependencies:
- ms "2.0.0"
-
-debug@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
- dependencies:
- ms "0.7.1"
-
-debug@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c"
- dependencies:
- ms "0.7.2"
-
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- dependencies:
- ms "2.0.0"
-
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-
-deep-equal@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
-
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-
-deep-is@~0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-default-require-extensions@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
- dependencies:
- strip-bom "^3.0.0"
-
-define-properties@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- dependencies:
- object-keys "^1.0.12"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-del@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
- dependencies:
- globby "^5.0.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- rimraf "^2.2.8"
-
-del@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
- dependencies:
- globby "^6.1.0"
- is-path-cwd "^1.0.0"
- is-path-in-cwd "^1.0.0"
- p-map "^1.1.1"
- pify "^3.0.0"
- rimraf "^2.2.8"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-
-delegate-events@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/delegate-events/-/delegate-events-1.1.1.tgz#dab490a9c1f1d40ca40ebcd21edaf717b671d4d4"
- dependencies:
- closest "*"
- component-event "*"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-depd@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
-
-depd@~1.1.1, depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-
-des.js@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-destroy@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
-
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- dependencies:
- repeating "^2.0.0"
-
-detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-
-detect-node@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127"
-
-di@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
-
-diagram-js-direct-editing@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/diagram-js-direct-editing/-/diagram-js-direct-editing-1.3.0.tgz#b99c1e45135660e362b7b34073632fbf20352c14"
- dependencies:
- min-dash "^3.0.0"
- min-dom "^3.0.0"
-
-diagram-js@^2.5.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/diagram-js/-/diagram-js-2.5.1.tgz#51c828f132da18a04f233a686495244ce0c2f42b"
- dependencies:
- css.escape "^1.5.1"
- didi "^4.0.0"
- hammerjs "^2.0.1"
- inherits "^2.0.1"
- min-dash "^3.0.0"
- min-dom "^3.0.0"
- object-refs "^0.3.0"
- path-intersection "^1.0.2"
- tiny-svg "^2.0.0"
-
-didi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/didi/-/didi-4.0.0.tgz#2b89d892a67fd3777f7642d3bf06697b69e9b622"
-
-diff@^3.1.0, diff@^3.2.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
-
-diffie-hellman@^5.0.0:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
-dir-glob@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
- dependencies:
- arrify "^1.0.1"
- path-type "^3.0.0"
-
-dns-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
-
-dns-packet@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a"
- dependencies:
- ip "^1.1.0"
- safe-buffer "^5.0.1"
-
-dns-txt@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
- dependencies:
- buffer-indexof "^1.0.0"
-
-dom-converter@~0.1:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
- dependencies:
- utila "~0.3"
-
-dom-serialize@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
- dependencies:
- custom-event "~1.0.0"
- ent "~2.2.0"
- extend "^3.0.0"
- void-elements "^2.0.0"
-
-dom-serializer@0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
- dependencies:
- domelementtype "~1.1.1"
- entities "~1.1.1"
-
-domain-browser@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
-
-domelementtype@1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
-
-domelementtype@~1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
-
-domhandler@2.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
- dependencies:
- domelementtype "1"
-
-domify@^1.3.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/domify/-/domify-1.4.0.tgz#11483617f764f8695975b4bdc79b14f0803b629b"
-
-domutils@1.1:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
- dependencies:
- domelementtype "1"
-
-domutils@1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-duplexify@^3.4.2, duplexify@^3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410"
- dependencies:
- end-of-stream "^1.0.0"
- inherits "^2.0.1"
- readable-stream "^2.0.0"
- stream-shift "^1.0.0"
-
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
-
-ejs@^2.5.7:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
-
-electron-to-chromium@^1.3.47:
- version "1.3.59"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.59.tgz#6377db04d8d3991d6286c72ed5c3fde6f4aaf112"
-
-elliptic@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
- dependencies:
- bn.js "^4.4.0"
- brorand "^1.0.1"
- hash.js "^1.0.0"
- hmac-drbg "^1.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.0"
-
-emojis-list@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-
-encodeurl@~1.0.1, encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
-
-end-of-stream@^1.0.0, end-of-stream@^1.1.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
- dependencies:
- once "^1.4.0"
-
-engine.io-client@1.8.3:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab"
- dependencies:
- component-emitter "1.2.1"
- component-inherit "0.0.3"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- has-cors "1.1.0"
- indexof "0.0.1"
- parsejson "0.0.3"
- parseqs "0.0.5"
- parseuri "0.0.5"
- ws "1.1.2"
- xmlhttprequest-ssl "1.5.3"
- yeast "0.1.2"
-
-engine.io-parser@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a"
- dependencies:
- after "0.8.2"
- arraybuffer.slice "0.0.6"
- base64-arraybuffer "0.1.5"
- blob "0.0.4"
- has-binary "0.1.7"
- wtf-8 "1.0.0"
-
-engine.io@1.8.3:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4"
- dependencies:
- accepts "1.3.3"
- base64id "1.0.0"
- cookie "0.3.1"
- debug "2.3.3"
- engine.io-parser "1.3.2"
- ws "1.1.2"
-
-enhanced-resolve@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
- dependencies:
- graceful-fs "^4.1.2"
- memory-fs "^0.4.0"
- tapable "^1.0.0"
-
-ent@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
-
-entities@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
-
-errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
- dependencies:
- prr "~1.0.1"
-
-error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.5.1, es-abstract@^1.7.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
- dependencies:
- es-to-primitive "^1.1.1"
- function-bind "^1.1.1"
- has "^1.0.1"
- is-callable "^1.1.3"
- is-regex "^1.0.4"
-
-es-to-primitive@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
- dependencies:
- is-callable "^1.1.1"
- is-date-object "^1.0.1"
- is-symbol "^1.0.1"
-
-es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
- version "0.10.46"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572"
- dependencies:
- es6-iterator "~2.0.3"
- es6-symbol "~3.1.1"
- next-tick "1"
-
-es6-iterator@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
- dependencies:
- d "1"
- es5-ext "^0.10.35"
- es6-symbol "^3.1.1"
-
-es6-promise@^4.0.3:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
-
-es6-promise@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6"
-
-es6-promisify@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
- dependencies:
- es6-promise "^4.0.3"
-
-es6-symbol@^3.1.1, es6-symbol@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-
-escodegen@1.8.x:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
- dependencies:
- esprima "^2.7.1"
- estraverse "^1.9.1"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.2.0"
-
-eslint-scope@^3.7.1:
- version "3.7.3"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
- dependencies:
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
-esprima@2.7.x, esprima@^2.7.1:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
-
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
-
-esrecurse@^4.1.0:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
- dependencies:
- estraverse "^4.1.0"
-
-estraverse@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
-
-estraverse@^4.1.0, estraverse@^4.1.1:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
-
-esutils@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
-
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-
-eventemitter3@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
-
-events@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-
-eventsource@0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
- dependencies:
- original ">=0.0.5"
-
-evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
- dependencies:
- md5.js "^1.3.4"
- safe-buffer "^5.1.1"
-
-execa@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
- dependencies:
- cross-spawn "^5.0.1"
- get-stream "^3.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
-exit@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
-
-expand-braces@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
- dependencies:
- array-slice "^0.2.3"
- array-unique "^0.2.1"
- braces "^0.1.2"
-
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- dependencies:
- is-posix-bracket "^0.1.0"
-
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- dependencies:
- debug "^2.3.3"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- posix-character-classes "^0.1.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-expand-range@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
- dependencies:
- is-number "^0.1.1"
- repeat-string "^0.2.2"
-
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- dependencies:
- fill-range "^2.1.0"
-
-express@^4.16.2:
- version "4.16.3"
- resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
- dependencies:
- accepts "~1.3.5"
- array-flatten "1.1.1"
- body-parser "1.18.2"
- content-disposition "0.5.2"
- content-type "~1.0.4"
- cookie "0.3.1"
- cookie-signature "1.0.6"
- debug "2.6.9"
- depd "~1.1.2"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- finalhandler "1.1.1"
- fresh "0.5.2"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.3"
- qs "6.5.1"
- range-parser "~1.2.0"
- safe-buffer "5.1.1"
- send "0.16.2"
- serve-static "1.13.2"
- setprototypeof "1.1.0"
- statuses "~1.4.0"
- type-is "~1.6.16"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extend@^3.0.0, extend@~3.0.1, extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
-
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- dependencies:
- is-extglob "^1.0.0"
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- dependencies:
- array-unique "^0.3.2"
- define-property "^1.0.0"
- expand-brackets "^2.1.4"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
-
-fast-deep-equal@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
-
-fast-deep-equal@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
-
-fast-json-stable-stringify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
-
-fast-levenshtein@~2.0.4:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-fastparse@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
-
-faye-websocket@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
- dependencies:
- websocket-driver ">=0.5.1"
-
-faye-websocket@~0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
- dependencies:
- websocket-driver ">=0.5.1"
-
-file-loader@^1.1.11:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
- dependencies:
- loader-utils "^1.0.2"
- schema-utils "^0.4.5"
-
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fileset@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
- dependencies:
- glob "^7.0.3"
- minimatch "^3.0.3"
-
-fill-range@^2.1.0:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^3.0.0"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-finalhandler@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.1"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.3.1"
- unpipe "~1.0.0"
-
-finalhandler@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.2"
- statuses "~1.4.0"
- unpipe "~1.0.0"
-
-find-cache-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
- dependencies:
- commondir "^1.0.1"
- make-dir "^1.0.0"
- pkg-dir "^2.0.0"
-
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- dependencies:
- locate-path "^2.0.0"
-
-flush-write-stream@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.4"
-
-follow-redirects@^1.0.0:
- version "1.5.6"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.6.tgz#44eb4fe1981dff25e2bd86b7d4033abcdb81e965"
- dependencies:
- debug "^3.1.0"
-
-for-in@^0.1.3:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
-
-for-in@^1.0.1, for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- dependencies:
- for-in "^1.0.1"
-
-for-own@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
- dependencies:
- for-in "^1.0.1"
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-
-form-data@~2.3.1, form-data@~2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "1.0.6"
- mime-types "^2.1.12"
-
-forwarded@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- dependencies:
- map-cache "^0.2.2"
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
-
-from2@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.0"
-
-fs-access@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
- dependencies:
- null-check "^1.0.0"
-
-fs-minipass@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
- dependencies:
- minipass "^2.2.1"
-
-fs-write-stream-atomic@^1.0.8:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
- dependencies:
- graceful-fs "^4.1.2"
- iferr "^0.1.5"
- imurmurhash "^0.1.4"
- readable-stream "1 || 2"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-fsevents@^1.0.0, fsevents@^1.2.2:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
- dependencies:
- nan "^2.9.2"
- node-pre-gyp "^0.10.0"
-
-fstream@^1.0.0, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- dependencies:
- aproba "^1.0.3"
- console-control-strings "^1.0.0"
- has-unicode "^2.0.0"
- object-assign "^4.1.0"
- signal-exit "^3.0.0"
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wide-align "^1.1.0"
-
-gaze@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
- dependencies:
- globule "^1.0.0"
-
-get-caller-file@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
-
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
-
-get-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- dependencies:
- assert-plus "^1.0.0"
-
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- dependencies:
- is-glob "^2.0.0"
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob@7.0.x:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.2"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^5.0.15:
- version "5.0.15"
- resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^6.0.4:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-globals@^9.18.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
-
-globby@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
- dependencies:
- array-union "^1.0.1"
- arrify "^1.0.0"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-globby@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
- dependencies:
- array-union "^1.0.1"
- glob "^7.0.3"
- object-assign "^4.0.1"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-globby@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
- dependencies:
- array-union "^1.0.1"
- dir-glob "^2.0.0"
- glob "^7.1.2"
- ignore "^3.3.5"
- pify "^3.0.0"
- slash "^1.0.0"
-
-globule@^1.0.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d"
- dependencies:
- glob "~7.1.1"
- lodash "~4.17.10"
- minimatch "~3.0.2"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-hammerjs@^2.0.1:
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1"
-
-handle-thing@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
-
-handlebars@^4.0.1, handlebars@^4.0.3:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
- dependencies:
- async "^1.4.0"
- optimist "^0.6.1"
- source-map "^0.4.4"
- optionalDependencies:
- uglify-js "^2.6"
-
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-
-har-validator@~5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
- dependencies:
- ajv "^5.1.0"
- har-schema "^2.0.0"
-
-har-validator@~5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29"
- dependencies:
- ajv "^5.3.0"
- har-schema "^2.0.0"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- dependencies:
- ansi-regex "^2.0.0"
-
-has-binary@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c"
- dependencies:
- isarray "0.0.1"
-
-has-cors@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
-
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- dependencies:
- function-bind "^1.1.1"
-
-hash-base@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.1"
-
-hat@^0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/hat/-/hat-0.0.3.tgz#bb014a9e64b3788aed8005917413d4ff3d502d8a"
-
-he@1.1.x:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
-
-hmac-drbg@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
-hosted-git-info@^2.1.4, hosted-git-info@^2.6.0:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
-
-hpack.js@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- dependencies:
- inherits "^2.0.1"
- obuf "^1.0.0"
- readable-stream "^2.0.1"
- wbuf "^1.1.0"
-
-html-entities@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
-
-html-minifier@^3.2.3:
- version "3.5.20"
- resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14"
- dependencies:
- camel-case "3.0.x"
- clean-css "4.2.x"
- commander "2.17.x"
- he "1.1.x"
- param-case "2.1.x"
- relateurl "0.2.x"
- uglify-js "3.4.x"
-
-html-webpack-plugin@^3.0.6:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
- dependencies:
- html-minifier "^3.2.3"
- loader-utils "^0.2.16"
- lodash "^4.17.3"
- pretty-error "^2.0.2"
- tapable "^1.0.0"
- toposort "^1.0.0"
- util.promisify "1.0.0"
-
-htmlparser2@~3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
- dependencies:
- domelementtype "1"
- domhandler "2.1"
- domutils "1.1"
- readable-stream "1.0"
-
-http-deceiver@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
-
-http-errors@1.6.2:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
- dependencies:
- depd "1.1.1"
- inherits "2.0.3"
- setprototypeof "1.0.3"
- statuses ">= 1.3.1 < 2"
-
-http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
-http-parser-js@>=0.4.0:
- version "0.4.13"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137"
-
-http-proxy-middleware@~0.18.0:
- version "0.18.0"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab"
- dependencies:
- http-proxy "^1.16.2"
- is-glob "^4.0.0"
- lodash "^4.17.5"
- micromatch "^3.1.9"
-
-http-proxy@^1.13.0, http-proxy@^1.16.2:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
- dependencies:
- eventemitter3 "^3.0.0"
- follow-redirects "^1.0.0"
- requires-port "^1.0.0"
-
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
-https-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
-
-https-proxy-agent@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
- dependencies:
- agent-base "^4.1.0"
- debug "^3.1.0"
-
-iconv-lite@0.4.19:
- version "0.4.19"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
-
-iconv-lite@0.4.23, iconv-lite@^0.4.4:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-ids@^0.2.0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/ids/-/ids-0.2.2.tgz#c23140dd06f5e5e95b1a5e5e98877ea734965540"
- dependencies:
- hat "^0.0.3"
-
-ieee754@^1.1.4:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
-
-iferr@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
-
-ignore-walk@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
- dependencies:
- minimatch "^3.0.4"
-
-ignore@^3.3.5:
- version "3.3.10"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
-
-image-size@~0.5.0:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
-
-immediate@~3.0.5:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
-
-import-cwd@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
- dependencies:
- import-from "^2.1.0"
-
-import-from@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
- dependencies:
- resolve-from "^3.0.0"
-
-import-local@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
- dependencies:
- pkg-dir "^2.0.0"
- resolve-cwd "^2.0.0"
-
-imurmurhash@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-
-in-publish@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- dependencies:
- repeating "^2.0.0"
-
-indexof@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-inherits@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-
-ini@^1.3.4, ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-
-internal-ip@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
- dependencies:
- meow "^3.3.0"
-
-invariant@^2.2.2:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- dependencies:
- loose-envify "^1.0.0"
-
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
-
-ip@^1.1.0, ip@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
-
-ipaddr.js@1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
-
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- dependencies:
- kind-of "^6.0.0"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- dependencies:
- builtin-modules "^1.0.0"
-
-is-callable@^1.1.1, is-callable@^1.1.3:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
-
-is-data-descriptor@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- dependencies:
- kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
-is-directory@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
-
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- dependencies:
- is-primitive "^2.0.0"
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-
-is-glob@^2.0.0, is-glob@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
- dependencies:
- is-extglob "^1.0.0"
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
-
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
-
-is-path-cwd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-
-is-path-in-cwd@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
- dependencies:
- is-path-inside "^1.0.0"
-
-is-path-inside@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
- dependencies:
- path-is-inside "^1.0.1"
-
-is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- dependencies:
- isobject "^3.0.1"
-
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-is-regex@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
- dependencies:
- has "^1.0.1"
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-
-is-symbol@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
-
-is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-
-is-wsl@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
-
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isbinaryfile@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
- dependencies:
- buffer-alloc "^1.2.0"
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-
-istanbul-api@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954"
- dependencies:
- async "^2.1.4"
- compare-versions "^3.1.0"
- fileset "^2.0.2"
- istanbul-lib-coverage "^1.2.0"
- istanbul-lib-hook "^1.2.0"
- istanbul-lib-instrument "^1.10.1"
- istanbul-lib-report "^1.1.4"
- istanbul-lib-source-maps "^1.2.4"
- istanbul-reports "^1.3.0"
- js-yaml "^3.7.0"
- mkdirp "^0.5.1"
- once "^1.4.0"
-
-istanbul-instrumenter-loader@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949"
- dependencies:
- convert-source-map "^1.5.0"
- istanbul-lib-instrument "^1.7.3"
- loader-utils "^1.1.0"
- schema-utils "^0.3.0"
-
-istanbul-lib-coverage@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341"
-
-istanbul-lib-hook@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805"
- dependencies:
- append-transform "^1.0.0"
-
-istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.7.3:
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b"
- dependencies:
- babel-generator "^6.18.0"
- babel-template "^6.16.0"
- babel-traverse "^6.18.0"
- babel-types "^6.18.0"
- babylon "^6.18.0"
- istanbul-lib-coverage "^1.2.0"
- semver "^5.3.0"
-
-istanbul-lib-report@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5"
- dependencies:
- istanbul-lib-coverage "^1.2.0"
- mkdirp "^0.5.1"
- path-parse "^1.0.5"
- supports-color "^3.1.2"
-
-istanbul-lib-source-maps@^1.2.4:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1"
- dependencies:
- debug "^3.1.0"
- istanbul-lib-coverage "^1.2.0"
- mkdirp "^0.5.1"
- rimraf "^2.6.1"
- source-map "^0.5.3"
-
-istanbul-reports@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554"
- dependencies:
- handlebars "^4.0.3"
-
-istanbul@^0.4.5:
- version "0.4.5"
- resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
- dependencies:
- abbrev "1.0.x"
- async "1.x"
- escodegen "1.8.x"
- esprima "2.7.x"
- glob "^5.0.15"
- handlebars "^4.0.1"
- js-yaml "3.x"
- mkdirp "0.5.x"
- nopt "3.x"
- once "1.x"
- resolve "1.1.x"
- supports-color "^3.1.0"
- which "^1.1.1"
- wordwrap "^1.0.0"
-
-jasmine-core@~2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e"
-
-jasmine-core@~2.99.1:
- version "2.99.1"
- resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz#e6400df1e6b56e130b61c4bcd093daa7f6e8ca15"
-
-jasmine-diff@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8"
- dependencies:
- diff "^3.2.0"
-
-jasmine-spec-reporter@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22"
- dependencies:
- colors "1.1.2"
-
-jasmine@2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e"
- dependencies:
- exit "^0.1.2"
- glob "^7.0.6"
- jasmine-core "~2.8.0"
-
-jasminewd2@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e"
-
-jquery@>=1.12.0, jquery@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
-
-js-base64@^2.1.8:
- version "2.4.8"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz#57a9b130888f956834aa40c5b165ba59c758f033"
-
-"js-tokens@^3.0.0 || ^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
-
-js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
-
-js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-
-json-parse-better-errors@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
-
-json-schema-traverse@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-json3@3.3.2, json3@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
-json5@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
-jszip@^3.1.3:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37"
- dependencies:
- core-js "~2.3.0"
- es6-promise "~3.0.2"
- lie "~3.1.0"
- pako "~1.0.2"
- readable-stream "~2.0.6"
-
-karma-chrome-launcher@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
- dependencies:
- fs-access "^1.0.0"
- which "^1.2.1"
-
-karma-coverage-istanbul-reporter@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.1.tgz#26b969317d191c6a897c783b4ffe7831cb92e684"
- dependencies:
- istanbul-api "^1.3.1"
- minimatch "^3.0.4"
-
-karma-jasmine-html-reporter@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c"
- dependencies:
- karma-jasmine "^1.0.2"
-
-karma-jasmine@^1.0.2, karma-jasmine@~1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3"
-
-karma-source-map-support@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz#36dd4d8ca154b62ace95696236fae37caf0a7dde"
- dependencies:
- source-map-support "^0.5.5"
-
-karma@~1.7.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.1.tgz#85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae"
- dependencies:
- bluebird "^3.3.0"
- body-parser "^1.16.1"
- chokidar "^1.4.1"
- colors "^1.1.0"
- combine-lists "^1.0.0"
- connect "^3.6.0"
- core-js "^2.2.0"
- di "^0.0.1"
- dom-serialize "^2.2.0"
- expand-braces "^0.1.1"
- glob "^7.1.1"
- graceful-fs "^4.1.2"
- http-proxy "^1.13.0"
- isbinaryfile "^3.0.0"
- lodash "^3.8.0"
- log4js "^0.6.31"
- mime "^1.3.4"
- minimatch "^3.0.2"
- optimist "^0.6.1"
- qjobs "^1.1.4"
- range-parser "^1.2.0"
- rimraf "^2.6.0"
- safe-buffer "^5.0.1"
- socket.io "1.7.3"
- source-map "^0.5.3"
- tmp "0.0.31"
- useragent "^2.1.12"
-
-killable@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-
-kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-
-lazy-cache@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- dependencies:
- invert-kv "^1.0.0"
-
-leb@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3"
-
-less-loader@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e"
- dependencies:
- clone "^2.1.1"
- loader-utils "^1.1.0"
- pify "^3.0.0"
-
-less@^3.0.4:
- version "3.8.1"
- resolved "https://registry.yarnpkg.com/less/-/less-3.8.1.tgz#f31758598ef5a1930dd4caefa9e4340641e71e1d"
- dependencies:
- clone "^2.1.2"
- optionalDependencies:
- errno "^0.1.1"
- graceful-fs "^4.1.2"
- image-size "~0.5.0"
- mime "^1.4.1"
- mkdirp "^0.5.0"
- promise "^7.1.1"
- request "^2.83.0"
- source-map "~0.6.0"
-
-levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
-license-webpack-plugin@^1.3.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.4.0.tgz#be504a849ba7d736f1a6da4b133864f30af885fa"
- dependencies:
- ejs "^2.5.7"
-
-lie@~3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
- dependencies:
- immediate "~3.0.5"
-
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
-loader-runner@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
-
-loader-utils@^0.2.16:
- version "0.2.17"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
- object-assign "^4.0.1"
-
-loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
- dependencies:
- big.js "^3.1.3"
- emojis-list "^2.0.0"
- json5 "^0.5.0"
-
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
-lodash.assign@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
-
-lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-
-lodash.debounce@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-
-lodash.mergewith@^4.6.0:
- version "4.6.1"
- resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
-
-lodash.tail@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
-
-lodash@^3.8.0:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
-
-lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.10:
- version "4.17.10"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
-
-log-symbols@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
- dependencies:
- chalk "^2.0.1"
-
-log4js@^0.6.31:
- version "0.6.38"
- resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd"
- dependencies:
- readable-stream "~1.0.2"
- semver "~4.3.3"
-
-loglevel@^1.4.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
-
-loglevelnext@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2"
- dependencies:
- es6-symbol "^3.1.1"
- object.assign "^4.1.0"
-
-long@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b"
-
-longest@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-loose-envify@^1.0.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
-loud-rejection@^1.0.0, loud-rejection@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-lower-case@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
-
-lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
-make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- dependencies:
- pify "^3.0.0"
-
-make-error@^1.1.1:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535"
-
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- dependencies:
- object-visit "^1.0.0"
-
-matches-selector@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/matches-selector/-/matches-selector-0.0.1.tgz#1df5262243ae341c1a0804dd302048267ac713bb"
-
-matches-selector@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/matches-selector/-/matches-selector-1.2.0.tgz#d1814e7e8f43e69d22ac33c9af727dc884ecf12a"
-
-math-random@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
-
-md5.js@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-
-mem@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
- dependencies:
- mimic-fn "^1.0.0"
-
-memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
- dependencies:
- errno "^0.1.3"
- readable-stream "^2.0.1"
-
-meow@^3.3.0, meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-
-micromatch@^2.1.5:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- dependencies:
- arr-diff "^2.0.0"
- array-unique "^0.2.1"
- braces "^1.8.2"
- expand-brackets "^0.1.4"
- extglob "^0.3.1"
- filename-regex "^2.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.1"
- kind-of "^3.0.2"
- normalize-path "^2.0.1"
- object.omit "^2.0.0"
- parse-glob "^3.0.4"
- regex-cache "^0.4.2"
-
-micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- braces "^2.3.1"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- extglob "^2.0.4"
- fragment-cache "^0.2.1"
- kind-of "^6.0.2"
- nanomatch "^1.2.9"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.2"
-
-miller-rabin@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
-"mime-db@>= 1.34.0 < 2":
- version "1.36.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397"
-
-mime-db@~1.35.0:
- version "1.35.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
-
-mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19:
- version "2.1.19"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
- dependencies:
- mime-db "~1.35.0"
-
-mime@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-
-mime@^1.3.4, mime@^1.4.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
-
-mime@^2.0.3, mime@^2.1.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369"
-
-mimic-fn@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-
-min-dash@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/min-dash/-/min-dash-3.1.0.tgz#ba1d0f06dd233f163ac8041f115e3bb08ba7fda9"
-
-min-dom@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/min-dom/-/min-dom-3.1.1.tgz#53440d23d32a0a8bb6b2e657ca4cfd39d998a29a"
- dependencies:
- closest "0.0.1"
- component-event "^0.1.4"
- delegate-events "^1.1.1"
- domify "^1.3.1"
- indexof "0.0.1"
- matches-selector "^1.2.0"
-
-mini-css-extract-plugin@~0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz#d2bcf77bb2596b8e4bd9257e43d3f9164c2e86cb"
- dependencies:
- "@webpack-contrib/schema-utils" "^1.0.0-beta.0"
- loader-utils "^1.1.0"
- webpack-sources "^1.1.0"
-
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
-
-minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-
-"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.1.3, minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
-minipass@^2.2.1, minipass@^2.3.3:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957"
- dependencies:
- safe-buffer "^5.1.2"
- yallist "^3.0.0"
-
-minizlib@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
- dependencies:
- minipass "^2.2.1"
-
-mississippi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
- dependencies:
- concat-stream "^1.5.0"
- duplexify "^3.4.2"
- end-of-stream "^1.1.0"
- flush-write-stream "^1.0.0"
- from2 "^2.1.0"
- parallel-transform "^1.1.0"
- pump "^2.0.1"
- pumpify "^1.3.3"
- stream-each "^1.1.0"
- through2 "^2.0.0"
-
-mixin-deep@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-mixin-object@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
- dependencies:
- for-in "^0.1.3"
- is-extendable "^0.1.1"
-
-mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-moddle-xml@^7.2.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/moddle-xml/-/moddle-xml-7.2.3.tgz#99c13bc026976361252518d657368b3c78eae483"
- dependencies:
- min-dash "^3.0.0"
- moddle "^4.1.0"
- saxen "^8.0.0"
- tiny-stack "^1.0.0"
-
-moddle@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/moddle/-/moddle-4.1.0.tgz#1b49f60dbe6c9565875605555c9fabe661e400b6"
- dependencies:
- min-dash "^3.0.0"
-
-move-concurrently@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
- dependencies:
- aproba "^1.1.1"
- copy-concurrently "^1.0.0"
- fs-write-stream-atomic "^1.0.8"
- mkdirp "^0.5.1"
- rimraf "^2.5.4"
- run-queue "^1.0.3"
-
-ms@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
-
-ms@0.7.2:
- version "0.7.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-multicast-dns-service-types@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
-
-multicast-dns@^6.0.1:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
- dependencies:
- dns-packet "^1.3.1"
- thunky "^1.0.2"
-
-nan@^2.10.0, nan@^2.9.2:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- fragment-cache "^0.2.1"
- is-windows "^1.0.2"
- kind-of "^6.0.2"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-needle@^2.2.1:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418"
- dependencies:
- debug "^2.1.2"
- iconv-lite "^0.4.4"
- sax "^1.2.4"
-
-negotiator@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
-
-neo-async@^2.5.0:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc"
-
-next-tick@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
-
-ngx-spinner@^6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/ngx-spinner/-/ngx-spinner-6.1.2.tgz#9778dbffbd17b27a7a90c4f0d9d8a7817e6ffb76"
- dependencies:
- tslib "^1.9.0"
-
-no-case@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
- dependencies:
- lower-case "^1.1.1"
-
-node-forge@0.7.5:
- version "0.7.5"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
-
-node-gyp@^3.8.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
- dependencies:
- fstream "^1.0.0"
- glob "^7.0.3"
- graceful-fs "^4.1.2"
- mkdirp "^0.5.0"
- nopt "2 || 3"
- npmlog "0 || 1 || 2 || 3 || 4"
- osenv "0"
- request "^2.87.0"
- rimraf "2"
- semver "~5.3.0"
- tar "^2.0.0"
- which "1"
-
-node-libs-browser@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
- dependencies:
- assert "^1.1.1"
- browserify-zlib "^0.2.0"
- buffer "^4.3.0"
- console-browserify "^1.1.0"
- constants-browserify "^1.0.0"
- crypto-browserify "^3.11.0"
- domain-browser "^1.1.1"
- events "^1.0.0"
- https-browserify "^1.0.0"
- os-browserify "^0.3.0"
- path-browserify "0.0.0"
- process "^0.11.10"
- punycode "^1.2.4"
- querystring-es3 "^0.2.0"
- readable-stream "^2.3.3"
- stream-browserify "^2.0.1"
- stream-http "^2.7.2"
- string_decoder "^1.0.0"
- timers-browserify "^2.0.4"
- tty-browserify "0.0.0"
- url "^0.11.0"
- util "^0.10.3"
- vm-browserify "0.0.4"
-
-node-pre-gyp@^0.10.0:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
- dependencies:
- detect-libc "^1.0.2"
- mkdirp "^0.5.1"
- needle "^2.2.1"
- nopt "^4.0.1"
- npm-packlist "^1.1.6"
- npmlog "^4.0.2"
- rc "^1.2.7"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^4"
-
-node-sass@^4.9.0:
- version "4.9.3"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224"
- dependencies:
- async-foreach "^0.1.3"
- chalk "^1.1.1"
- cross-spawn "^3.0.0"
- gaze "^1.0.0"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- in-publish "^2.0.0"
- lodash.assign "^4.2.0"
- lodash.clonedeep "^4.3.2"
- lodash.mergewith "^4.6.0"
- meow "^3.7.0"
- mkdirp "^0.5.1"
- nan "^2.10.0"
- node-gyp "^3.8.0"
- npmlog "^4.0.0"
- request "2.87.0"
- sass-graph "^2.2.4"
- stdout-stream "^1.4.0"
- "true-case-path" "^1.0.2"
-
-"nopt@2 || 3", nopt@3.x:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- dependencies:
- abbrev "1"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- dependencies:
- hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
-
-npm-bundled@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
-
-"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0":
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1"
- dependencies:
- hosted-git-info "^2.6.0"
- osenv "^0.1.5"
- semver "^5.5.0"
- validate-npm-package-name "^3.0.0"
-
-npm-packlist@^1.1.6:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
- dependencies:
- ignore-walk "^3.0.1"
- npm-bundled "^1.0.1"
-
-npm-registry-client@^8.5.1:
- version "8.6.0"
- resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4"
- dependencies:
- concat-stream "^1.5.2"
- graceful-fs "^4.1.6"
- normalize-package-data "~1.0.1 || ^2.0.0"
- npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
- once "^1.3.3"
- request "^2.74.0"
- retry "^0.10.0"
- safe-buffer "^5.1.1"
- semver "2 >=2.2.1 || 3.x || 4 || 5"
- slide "^1.1.3"
- ssri "^5.2.4"
- optionalDependencies:
- npmlog "2 || ^3.1.0 || ^4.0.0"
-
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- dependencies:
- path-key "^2.0.0"
-
-"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-nth-check@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
- dependencies:
- boolbase "~1.0.0"
-
-null-check@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-oauth-sign@~0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
-
-object-assign@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
-
-object-assign@^4.0.1, object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object-component@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-keys@^1.0.11, object-keys@^1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
-
-object-refs@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/object-refs/-/object-refs-0.3.0.tgz#934f4f0fb6b409e78be15fa60f616108aed63786"
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- dependencies:
- isobject "^3.0.0"
-
-object.assign@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.1"
- has-symbols "^1.0.0"
- object-keys "^1.0.11"
-
-object.getownpropertydescriptors@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
- dependencies:
- define-properties "^1.1.2"
- es-abstract "^1.5.1"
-
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- dependencies:
- isobject "^3.0.1"
-
-obuf@^1.0.0, obuf@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
-
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- dependencies:
- ee-first "1.1.1"
-
-on-headers@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-
-once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- dependencies:
- wrappy "1"
-
-opn@^5.1.0, opn@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
- dependencies:
- is-wsl "^1.1.0"
-
-optimist@^0.6.1, optimist@~0.6.0:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
- dependencies:
- minimist "~0.0.1"
- wordwrap "~0.0.2"
-
-optionator@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.4"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- wordwrap "~1.0.0"
-
-options@>=0.0.5:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
-
-original@>=0.0.5:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
- dependencies:
- url-parse "^1.4.3"
-
-os-browserify@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
-
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-locale@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
- dependencies:
- lcid "^1.0.0"
-
-os-locale@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
- dependencies:
- execa "^0.7.0"
- lcid "^1.0.0"
- mem "^1.1.0"
-
-os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@0, osenv@^0.1.4, osenv@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-
-p-limit@^1.0.0, p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
- dependencies:
- p-try "^1.0.0"
-
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- dependencies:
- p-limit "^1.1.0"
-
-p-map@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
-
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-
-pako@~1.0.2, pako@~1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
-
-parallel-transform@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
- dependencies:
- cyclist "~0.2.2"
- inherits "^2.0.3"
- readable-stream "^2.1.5"
-
-param-case@2.1.x:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
- dependencies:
- no-case "^2.2.0"
-
-parse-asn1@^5.0.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
- dependencies:
- asn1.js "^4.0.0"
- browserify-aes "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.0"
- pbkdf2 "^3.0.3"
-
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- dependencies:
- error-ex "^1.2.0"
-
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-parse5@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
-
-parse5@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
-
-parsejson@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab"
- dependencies:
- better-assert "~1.0.0"
-
-parseqs@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
- dependencies:
- better-assert "~1.0.0"
-
-parseuri@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
- dependencies:
- better-assert "~1.0.0"
-
-parseurl@~1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-
-path-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-
-path-intersection@^1.0.2:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/path-intersection/-/path-intersection-1.1.1.tgz#a1185ebae7cd9f6d86fd299533c3f7c638a01559"
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-is-inside@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
-
-path-key@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-
-path-parse@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
-
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- dependencies:
- pify "^3.0.0"
-
-pbkdf2@^3.0.3:
- version "3.0.16"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
-
-pify@^2.0.0, pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
-
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- dependencies:
- find-up "^2.1.0"
-
-portfinder@^1.0.13, portfinder@^1.0.9:
- version "1.0.17"
- resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a"
- dependencies:
- async "^1.5.2"
- debug "^2.2.0"
- mkdirp "0.5.x"
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-
-postcss-import@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0"
- dependencies:
- postcss "^6.0.1"
- postcss-value-parser "^3.2.3"
- read-cache "^1.0.0"
- resolve "^1.1.7"
-
-postcss-load-config@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
- dependencies:
- cosmiconfig "^4.0.0"
- import-cwd "^2.0.0"
-
-postcss-loader@^2.1.5:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740"
- dependencies:
- loader-utils "^1.1.0"
- postcss "^6.0.0"
- postcss-load-config "^2.0.0"
- schema-utils "^0.4.0"
-
-postcss-url@^7.3.2:
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120"
- dependencies:
- mime "^1.4.1"
- minimatch "^3.0.4"
- mkdirp "^0.5.0"
- postcss "^6.0.1"
- xxhashjs "^0.2.1"
-
-postcss-value-parser@^3.2.3:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
-
-postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23:
- version "6.0.23"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
- dependencies:
- chalk "^2.4.1"
- source-map "^0.6.1"
- supports-color "^5.4.0"
-
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-pretty-error@^2.0.2:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
- dependencies:
- renderkid "^2.0.1"
- utila "~0.4"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-process-nextick-args@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-
-process@^0.11.10:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-
-promise-inflight@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
-
-promise@^7.1.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
- dependencies:
- asap "~2.0.3"
-
-protractor@^5.4.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.0.tgz#e71c9c1f5cf6c5e9bdbcdb71e7f31b17ffd2878f"
- dependencies:
- "@types/node" "^6.0.46"
- "@types/q" "^0.0.32"
- "@types/selenium-webdriver" "^3.0.0"
- blocking-proxy "^1.0.0"
- browserstack "^1.5.1"
- chalk "^1.1.3"
- glob "^7.0.3"
- jasmine "2.8.0"
- jasminewd2 "^2.1.0"
- optimist "~0.6.0"
- q "1.4.1"
- saucelabs "^1.5.0"
- selenium-webdriver "3.6.0"
- source-map-support "~0.4.0"
- webdriver-js-extender "2.0.0"
- webdriver-manager "^12.0.6"
-
-proxy-addr@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
- dependencies:
- forwarded "~0.1.2"
- ipaddr.js "1.8.0"
-
-prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
-
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
-
-psl@^1.1.24:
- version "1.1.29"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
-
-public-encrypt@^4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994"
- dependencies:
- bn.js "^4.1.0"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- parse-asn1 "^5.0.0"
- randombytes "^2.0.1"
-
-pump@^2.0.0, pump@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-pumpify@^1.3.3:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
- dependencies:
- duplexify "^3.6.0"
- inherits "^2.0.3"
- pump "^2.0.0"
-
-punycode@1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-
-punycode@^1.2.4, punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
-
-q@1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
-
-q@^1.4.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-
-qjobs@^1.1.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
-
-qs@6.5.1:
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
-
-qs@6.5.2, qs@~6.5.1, qs@~6.5.2:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-
-querystring-es3@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-
-querystring@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-
-querystringify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755"
-
-randomatic@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116"
- dependencies:
- is-number "^4.0.0"
- kind-of "^6.0.0"
- math-random "^1.0.1"
-
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
- dependencies:
- safe-buffer "^5.1.0"
-
-randomfill@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
- dependencies:
- randombytes "^2.0.5"
- safe-buffer "^5.1.0"
-
-range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
-
-raw-body@2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
- dependencies:
- bytes "3.0.0"
- http-errors "1.6.2"
- iconv-lite "0.4.19"
- unpipe "1.0.0"
-
-raw-body@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
- dependencies:
- bytes "3.0.0"
- http-errors "1.6.3"
- iconv-lite "0.4.23"
- unpipe "1.0.0"
-
-raw-loader@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
-
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-read-cache@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
- dependencies:
- pify "^2.3.0"
-
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-readable-stream@1.0, readable-stream@~1.0.2:
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
-readable-stream@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- string_decoder "~0.10.x"
- util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
-
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-reflect-metadata@^0.1.2:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2"
-
-regenerate@^1.2.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
-
-regenerator-runtime@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
-
-regex-cache@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
- dependencies:
- is-equal-shallow "^0.1.3"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-regexpu-core@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
- dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
-
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
-
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- dependencies:
- jsesc "~0.5.0"
-
-relateurl@0.2.x:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-
-renderkid@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319"
- dependencies:
- css-select "^1.1.0"
- dom-converter "~0.1"
- htmlparser2 "~3.3.0"
- strip-ansi "^3.0.0"
- utila "~0.3"
-
-repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-
-repeat-string@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
-
-repeat-string@^1.5.2, repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- dependencies:
- is-finite "^1.0.0"
-
-request@2.87.0:
- version "2.87.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e"
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.6.0"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.1"
- forever-agent "~0.6.1"
- form-data "~2.3.1"
- har-validator "~5.0.3"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.17"
- oauth-sign "~0.8.2"
- performance-now "^2.1.0"
- qs "~6.5.1"
- safe-buffer "^5.1.1"
- tough-cookie "~2.3.3"
- tunnel-agent "^0.6.0"
- uuid "^3.1.0"
-
-request@^2.74.0, request@^2.83.0, request@^2.87.0:
- version "2.88.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.0"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.4.3"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-
-require-from-string@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
-
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
-
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-
-resolve-cwd@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
- dependencies:
- resolve-from "^3.0.0"
-
-resolve-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-
-resolve@1.1.x:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-
-resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
- dependencies:
- path-parse "^1.0.5"
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-
-retry@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
-
-right-align@^0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
- dependencies:
- align-text "^0.1.1"
-
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- dependencies:
- glob "^7.0.5"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
-run-queue@^1.0.0, run-queue@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
- dependencies:
- aproba "^1.1.1"
-
-rxjs@^6.0.0:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9"
- dependencies:
- tslib "^1.9.0"
-
-safe-buffer@5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- dependencies:
- ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-
-sass-graph@^2.2.4:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
- dependencies:
- glob "^7.0.0"
- lodash "^4.0.0"
- scss-tokenizer "^0.2.3"
- yargs "^7.0.0"
-
-sass-loader@^7.0.1:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d"
- dependencies:
- clone-deep "^2.0.1"
- loader-utils "^1.0.1"
- lodash.tail "^4.1.1"
- neo-async "^2.5.0"
- pify "^3.0.0"
- semver "^5.5.0"
-
-saucelabs@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d"
- dependencies:
- https-proxy-agent "^2.2.1"
-
-sax@0.5.x:
- version "0.5.8"
- resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
-
-sax@>=0.6.0, sax@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-
-saxen@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/saxen/-/saxen-8.0.0.tgz#910e2878b1ffa58b214ef8cd2d827bb7a82b2b2b"
-
-schema-utils@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
- dependencies:
- ajv "^5.0.0"
-
-schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.4, schema-utils@^0.4.5:
- version "0.4.7"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
- dependencies:
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
-
-schema-utils@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
- dependencies:
- ajv "^6.1.0"
- ajv-errors "^1.0.0"
- ajv-keywords "^3.1.0"
-
-scss-tokenizer@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
- dependencies:
- js-base64 "^2.1.8"
- source-map "^0.4.2"
-
-select-hose@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
-
-selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc"
- dependencies:
- jszip "^3.1.3"
- rimraf "^2.5.4"
- tmp "0.0.30"
- xml2js "^0.4.17"
-
-selfsigned@^1.9.1:
- version "1.10.3"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823"
- dependencies:
- node-forge "0.7.5"
-
-semver-dsl@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0"
- dependencies:
- semver "^5.3.0"
-
-semver-intersect@^1.1.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3"
- dependencies:
- semver "^5.0.0"
-
-"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0:
- version "5.5.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
-
-semver@~4.3.3:
- version "4.3.6"
- resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
-
-semver@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
-
-send@0.16.2:
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
- dependencies:
- debug "2.6.9"
- depd "~1.1.2"
- destroy "~1.0.4"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- fresh "0.5.2"
- http-errors "~1.6.2"
- mime "1.4.1"
- ms "2.0.0"
- on-finished "~2.3.0"
- range-parser "~1.2.0"
- statuses "~1.4.0"
-
-serialize-javascript@^1.4.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
-
-serve-index@^1.7.2:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- dependencies:
- accepts "~1.3.4"
- batch "0.6.1"
- debug "2.6.9"
- escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
-
-serve-static@1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.2"
- send "0.16.2"
-
-set-blocking@^2.0.0, set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-set-value@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.1"
- to-object-path "^0.3.0"
-
-set-value@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-setimmediate@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-
-setprototypeof@1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
-
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
-
-sha.js@^2.4.0, sha.js@^2.4.8:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-shallow-clone@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
- dependencies:
- is-extendable "^0.1.1"
- kind-of "^5.0.0"
- mixin-object "^2.0.1"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-silent-error@^1.0.0, silent-error@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9"
- dependencies:
- debug "^2.2.0"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
-
-slide@^1.1.3:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- dependencies:
- base "^0.11.1"
- debug "^2.2.0"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- map-cache "^0.2.2"
- source-map "^0.5.6"
- source-map-resolve "^0.5.0"
- use "^3.1.0"
-
-socket.io-adapter@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b"
- dependencies:
- debug "2.3.3"
- socket.io-parser "2.3.1"
-
-socket.io-client@1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377"
- dependencies:
- backo2 "1.0.2"
- component-bind "1.0.0"
- component-emitter "1.2.1"
- debug "2.3.3"
- engine.io-client "1.8.3"
- has-binary "0.1.7"
- indexof "0.0.1"
- object-component "0.0.3"
- parseuri "0.0.5"
- socket.io-parser "2.3.1"
- to-array "0.1.4"
-
-socket.io-parser@2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0"
- dependencies:
- component-emitter "1.1.2"
- debug "2.2.0"
- isarray "0.0.1"
- json3 "3.3.2"
-
-socket.io@1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b"
- dependencies:
- debug "2.3.3"
- engine.io "1.8.3"
- has-binary "0.1.7"
- object-assign "4.1.0"
- socket.io-adapter "0.5.0"
- socket.io-client "1.7.3"
- socket.io-parser "2.3.1"
-
-sockjs-client@1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
- dependencies:
- debug "^2.6.6"
- eventsource "0.1.6"
- faye-websocket "~0.11.0"
- inherits "^2.0.1"
- json3 "^3.3.2"
- url-parse "^1.1.8"
-
-sockjs@0.3.19:
- version "0.3.19"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
- dependencies:
- faye-websocket "^0.10.0"
- uuid "^3.0.1"
-
-source-list-map@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
-
-source-list-map@~0.1.7:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
-
-source-map-resolve@^0.5.0:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
- dependencies:
- atob "^2.1.1"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
-source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.5:
- version "0.5.9"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map-support@~0.4.0:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
- dependencies:
- source-map "^0.5.6"
-
-source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-
-source-map@0.1.x:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-
-source-map@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
- dependencies:
- amdefine ">=0.0.4"
-
-spdx-correct@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
-
-spdx-expression-parse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87"
-
-spdy-transport@^2.0.18:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1"
- dependencies:
- debug "^2.6.8"
- detect-node "^2.0.3"
- hpack.js "^2.1.6"
- obuf "^1.1.1"
- readable-stream "^2.2.9"
- safe-buffer "^5.0.1"
- wbuf "^1.7.2"
-
-spdy@^3.4.1:
- version "3.4.7"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
- dependencies:
- debug "^2.6.8"
- handle-thing "^1.2.5"
- http-deceiver "^1.2.7"
- safe-buffer "^5.0.1"
- select-hose "^2.0.0"
- spdy-transport "^2.0.18"
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- dependencies:
- extend-shallow "^3.0.0"
-
-sprintf-js@^1.0.3:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-
-sshpk@^1.7.0:
- version "1.14.2"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- safer-buffer "^2.0.2"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
-
-ssri@^5.2.4:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
- dependencies:
- safe-buffer "^5.1.1"
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-stats-webpack-plugin@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b"
- dependencies:
- lodash "^4.17.4"
-
-"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
-
-statuses@~1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
-
-statuses@~1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
-
-stdout-stream@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b"
- dependencies:
- readable-stream "^2.0.1"
-
-stream-browserify@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
-stream-each@^1.1.0:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
- dependencies:
- end-of-stream "^1.1.0"
- stream-shift "^1.0.0"
-
-stream-http@^2.7.2:
- version "2.8.3"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
- dependencies:
- builtin-status-codes "^3.0.0"
- inherits "^2.0.1"
- readable-stream "^2.3.6"
- to-arraybuffer "^1.0.0"
- xtend "^4.0.0"
-
-stream-shift@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
-
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string_decoder@^1.0.0, string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- dependencies:
- safe-buffer "~5.1.0"
-
-string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- dependencies:
- get-stdin "^4.0.1"
-
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-style-loader@^0.21.0:
- version "0.21.0"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852"
- dependencies:
- loader-utils "^1.1.0"
- schema-utils "^0.4.5"
-
-stylus-loader@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6"
- dependencies:
- loader-utils "^1.0.2"
- lodash.clonedeep "^4.5.0"
- when "~3.6.x"
-
-stylus@^0.54.5:
- version "0.54.5"
- resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79"
- dependencies:
- css-parse "1.7.x"
- debug "*"
- glob "7.0.x"
- mkdirp "0.5.x"
- sax "0.5.x"
- source-map "0.1.x"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-
-supports-color@^3.1.0, supports-color@^3.1.2:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- dependencies:
- has-flag "^1.0.0"
-
-supports-color@^4.0.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
- dependencies:
- has-flag "^2.0.0"
-
-supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- dependencies:
- has-flag "^3.0.0"
-
-symbol-observable@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
-
-tapable@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
-
-tar@^2.0.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-tar@^4:
- version "4.4.6"
- resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
- dependencies:
- chownr "^1.0.1"
- fs-minipass "^1.2.5"
- minipass "^2.3.3"
- minizlib "^1.1.0"
- mkdirp "^0.5.0"
- safe-buffer "^5.1.2"
- yallist "^3.0.2"
-
-text-table@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-
-through2@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
- dependencies:
- readable-stream "^2.1.5"
- xtend "~4.0.1"
-
-through@X.X.X:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-
-thunky@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371"
-
-timers-browserify@^2.0.4:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
- dependencies:
- setimmediate "^1.0.4"
-
-tiny-stack@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/tiny-stack/-/tiny-stack-1.1.0.tgz#a5d65c5753709ea43b29e903e6f6323185b9ac21"
-
-tiny-svg@^2.0.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/tiny-svg/-/tiny-svg-2.1.2.tgz#607c73004d3c807ba7d69ba9616d433190d2baf7"
-
-tmp@0.0.30:
- version "0.0.30"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
- dependencies:
- os-tmpdir "~1.0.1"
-
-tmp@0.0.31:
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
- dependencies:
- os-tmpdir "~1.0.1"
-
-tmp@0.0.x:
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
- dependencies:
- os-tmpdir "~1.0.2"
-
-to-array@0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
-
-to-arraybuffer@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-
-to-fast-properties@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-toastr@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/toastr/-/toastr-2.1.4.tgz#8b43be64fb9d0c414871446f2db8e8ca4e95f181"
- dependencies:
- jquery ">=1.12.0"
-
-toposort@^1.0.0:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
-
-tough-cookie@~2.3.3:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
- dependencies:
- punycode "^1.4.1"
-
-tough-cookie@~2.4.3:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
- dependencies:
- psl "^1.1.24"
- punycode "^1.4.1"
-
-tree-kill@^1.0.0, tree-kill@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
-
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
-
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-
-"true-case-path@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62"
- dependencies:
- glob "^6.0.4"
-
-ts-node@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-5.0.1.tgz#78e5d1cb3f704de1b641e43b76be2d4094f06f81"
- dependencies:
- arrify "^1.0.0"
- chalk "^2.3.0"
- diff "^3.1.0"
- make-error "^1.1.1"
- minimist "^1.2.0"
- mkdirp "^0.5.1"
- source-map-support "^0.5.3"
- yn "^2.0.0"
-
-tsickle@^0.32.1:
- version "0.32.1"
- resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.32.1.tgz#f16e94ba80b32fc9ebe320dc94fbc2ca7f3521a5"
- dependencies:
- jasmine-diff "^0.1.3"
- minimist "^1.2.0"
- mkdirp "^0.5.1"
- source-map "^0.6.0"
- source-map-support "^0.5.0"
-
-tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
-
-tslint@~5.9.1:
- version "5.9.1"
- resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
- dependencies:
- babel-code-frame "^6.22.0"
- builtin-modules "^1.1.1"
- chalk "^2.3.0"
- commander "^2.12.1"
- diff "^3.2.0"
- glob "^7.1.1"
- js-yaml "^3.7.0"
- minimatch "^3.0.4"
- resolve "^1.3.2"
- semver "^5.3.0"
- tslib "^1.8.0"
- tsutils "^2.12.1"
-
-tsutils@^2.12.1:
- version "2.29.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
- dependencies:
- tslib "^1.8.1"
-
-tty-browserify@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- dependencies:
- prelude-ls "~1.1.2"
-
-type-is@~1.6.15, type-is@~1.6.16:
- version "1.6.16"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.18"
-
-typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-
-"typescript@>=2.6.2 <2.8", typescript@~2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836"
-
-typescript@~2.9.1:
- version "2.9.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
-
-uglify-es@^3.3.4:
- version "3.3.9"
- resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
- dependencies:
- commander "~2.13.0"
- source-map "~0.6.1"
-
-uglify-js@3.4.x:
- version "3.4.7"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.7.tgz#4df6b92e54789aa921a254cb1e33704d6ec12b89"
- dependencies:
- commander "~2.16.0"
- source-map "~0.6.1"
-
-uglify-js@^2.6:
- version "2.8.29"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
- dependencies:
- source-map "~0.5.1"
- yargs "~3.10.0"
- optionalDependencies:
- uglify-to-browserify "~1.0.0"
-
-uglify-to-browserify@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de"
- dependencies:
- cacache "^10.0.4"
- find-cache-dir "^1.0.0"
- schema-utils "^0.4.5"
- serialize-javascript "^1.4.0"
- source-map "^0.6.1"
- uglify-es "^3.3.4"
- webpack-sources "^1.1.0"
- worker-farm "^1.5.2"
-
-ultron@1.0.x:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
-
-union-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^0.4.3"
-
-unique-filename@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
- dependencies:
- unique-slug "^2.0.0"
-
-unique-slug@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab"
- dependencies:
- imurmurhash "^0.1.4"
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-upath@^1.0.5:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
-
-upper-case@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
-
-uri-js@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
- dependencies:
- punycode "^2.1.0"
-
-uri-js@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
- dependencies:
- punycode "^2.1.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-
-url-join@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a"
-
-url-loader@^1.0.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1"
- dependencies:
- loader-utils "^1.1.0"
- mime "^2.0.3"
- schema-utils "^1.0.0"
-
-url-parse@^1.1.8, url-parse@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15"
- dependencies:
- querystringify "^2.0.0"
- requires-port "^1.0.0"
-
-url@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
- dependencies:
- punycode "1.3.2"
- querystring "0.2.0"
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-
-useragent@^2.1.12:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
- dependencies:
- lru-cache "4.1.x"
- tmp "0.0.x"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-util.promisify@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
- dependencies:
- define-properties "^1.1.2"
- object.getownpropertydescriptors "^2.0.3"
-
-util@0.10.3:
- version "0.10.3"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
- dependencies:
- inherits "2.0.1"
-
-util@^0.10.3:
- version "0.10.4"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
- dependencies:
- inherits "2.0.3"
-
-utila@~0.3:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
-
-utila@~0.4:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
-
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-
-uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-validate-npm-package-name@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
- dependencies:
- builtins "^1.0.3"
-
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
-vm-browserify@0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
- dependencies:
- indexof "0.0.1"
-
-void-elements@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
-
-watchpack@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
- dependencies:
- chokidar "^2.0.2"
- graceful-fs "^4.1.2"
- neo-async "^2.5.0"
-
-wbuf@^1.1.0, wbuf@^1.7.2:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- dependencies:
- minimalistic-assert "^1.0.0"
-
-webassemblyjs@1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.3.tgz#0591893efb8fbde74498251cbe4b2d83df9239cb"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/validation" "1.4.3"
- "@webassemblyjs/wasm-parser" "1.4.3"
- "@webassemblyjs/wast-parser" "1.4.3"
- long "^3.2.0"
-
-webdriver-js-extender@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz#b27fc1ed1afbf78f0ac57e4c878f31b10e57f146"
- dependencies:
- "@types/selenium-webdriver" "^3.0.0"
- selenium-webdriver "^3.0.1"
-
-webdriver-manager@^12.0.6:
- version "12.1.0"
- resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.0.tgz#f6601e52de5f0c97fc7024c889eeb2416f2f1d9d"
- dependencies:
- adm-zip "^0.4.9"
- chalk "^1.1.1"
- del "^2.2.0"
- glob "^7.0.3"
- ini "^1.3.4"
- minimist "^1.2.0"
- q "^1.4.1"
- request "^2.87.0"
- rimraf "^2.5.2"
- semver "^5.3.0"
- xml2js "^0.4.17"
-
-webpack-core@^0.6.8:
- version "0.6.9"
- resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
- dependencies:
- source-list-map "~0.1.7"
- source-map "~0.4.1"
-
-webpack-dev-middleware@3.1.3, webpack-dev-middleware@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed"
- dependencies:
- loud-rejection "^1.6.0"
- memory-fs "~0.4.1"
- mime "^2.1.0"
- path-is-absolute "^1.0.0"
- range-parser "^1.0.3"
- url-join "^4.0.0"
- webpack-log "^1.0.1"
-
-webpack-dev-server@^3.1.4:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401"
- dependencies:
- ansi-html "0.0.7"
- array-includes "^3.0.3"
- bonjour "^3.5.0"
- chokidar "^2.0.0"
- compression "^1.5.2"
- connect-history-api-fallback "^1.3.0"
- debug "^3.1.0"
- del "^3.0.0"
- express "^4.16.2"
- html-entities "^1.2.0"
- http-proxy-middleware "~0.18.0"
- import-local "^1.0.0"
- internal-ip "1.2.0"
- ip "^1.1.5"
- killable "^1.0.0"
- loglevel "^1.4.1"
- opn "^5.1.0"
- portfinder "^1.0.9"
- selfsigned "^1.9.1"
- serve-index "^1.7.2"
- sockjs "0.3.19"
- sockjs-client "1.1.5"
- spdy "^3.4.1"
- strip-ansi "^3.0.0"
- supports-color "^5.1.0"
- webpack-dev-middleware "3.1.3"
- webpack-log "^1.1.2"
- yargs "11.0.0"
-
-webpack-log@^1.0.1, webpack-log@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d"
- dependencies:
- chalk "^2.1.0"
- log-symbols "^2.1.0"
- loglevelnext "^1.0.1"
- uuid "^3.1.0"
-
-webpack-merge@^4.1.2:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b"
- dependencies:
- lodash "^4.17.5"
-
-webpack-sources@^1.0.1, webpack-sources@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
-webpack-subresource-integrity@^1.1.0-rc.4:
- version "1.1.0-rc.4"
- resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz#c5c4e3d690f9d2f64a9550e07a8767f9796aa5d8"
- dependencies:
- webpack-core "^0.6.8"
-
-webpack@~4.8.1:
- version "4.8.3"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb"
- dependencies:
- "@webassemblyjs/ast" "1.4.3"
- "@webassemblyjs/wasm-edit" "1.4.3"
- "@webassemblyjs/wasm-parser" "1.4.3"
- acorn "^5.0.0"
- acorn-dynamic-import "^3.0.0"
- ajv "^6.1.0"
- ajv-keywords "^3.1.0"
- chrome-trace-event "^0.1.1"
- enhanced-resolve "^4.0.0"
- eslint-scope "^3.7.1"
- loader-runner "^2.3.0"
- loader-utils "^1.1.0"
- memory-fs "~0.4.1"
- micromatch "^3.1.8"
- mkdirp "~0.5.0"
- neo-async "^2.5.0"
- node-libs-browser "^2.0.0"
- schema-utils "^0.4.4"
- tapable "^1.0.0"
- uglifyjs-webpack-plugin "^1.2.4"
- watchpack "^1.5.0"
- webpack-sources "^1.0.1"
-
-websocket-driver@>=0.5.1:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
- dependencies:
- http-parser-js ">=0.4.0"
- websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
-
-when@~3.6.x:
- version "3.6.4"
- resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e"
-
-which-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
-
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-
-which@1, which@^1.1.1, which@^1.2.1, which@^1.2.9:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- dependencies:
- string-width "^1.0.2 || 2"
-
-window-size@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wordwrap@^1.0.0, wordwrap@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
-wordwrap@~0.0.2:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-
-worker-farm@^1.5.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
- dependencies:
- errno "~0.1.7"
-
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-ws@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
- dependencies:
- options ">=0.0.5"
- ultron "1.0.x"
-
-wtf-8@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
-
-xml2js@^0.4.17:
- version "0.4.19"
- resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
- dependencies:
- sax ">=0.6.0"
- xmlbuilder "~9.0.1"
-
-xmlbuilder@~9.0.1:
- version "9.0.7"
- resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
-
-xmlhttprequest-ssl@1.5.3:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d"
-
-xtend@^4.0.0, xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
-xxhashjs@^0.2.1:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8"
- dependencies:
- cuint "^0.2.2"
-
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
-
-y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
-
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
-
-yallist@^3.0.0, yallist@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
-
-yargs-parser@^10.0.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
- dependencies:
- camelcase "^4.1.0"
-
-yargs-parser@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
- dependencies:
- camelcase "^3.0.0"
-
-yargs-parser@^9.0.2:
- version "9.0.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
- dependencies:
- camelcase "^4.1.0"
-
-yargs@11.0.0:
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b"
- dependencies:
- cliui "^4.0.0"
- decamelize "^1.1.1"
- find-up "^2.1.0"
- get-caller-file "^1.0.1"
- os-locale "^2.0.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^9.0.2"
-
-yargs@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
- dependencies:
- camelcase "^3.0.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^1.4.0"
- read-pkg-up "^1.0.1"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^1.0.2"
- which-module "^1.0.0"
- y18n "^3.2.1"
- yargs-parser "^5.0.0"
-
-yargs@~3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
- dependencies:
- camelcase "^1.0.2"
- cliui "^2.1.0"
- decamelize "^1.0.0"
- window-size "0.1.0"
-
-yeast@0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
-
-yn@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
-
-zone.js@^0.8.26:
- version "0.8.26"
- resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d"
diff --git a/so-optimization-clients/pom.xml b/so-optimization-clients/pom.xml
index 79b1f7d5a4..90fca31e6c 100644
--- a/so-optimization-clients/pom.xml
+++ b/so-optimization-clients/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-optimization-clients</artifactId>
@@ -41,13 +41,19 @@
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.camunda.bpm</groupId>
+ <artifactId>camunda-bom</artifactId>
+ <version>7.14.0</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
- <version>${camunda.springboot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/so-sdn-clients/pom.xml b/so-sdn-clients/pom.xml
index 905c76d7ad..025bb1f06a 100644
--- a/so-sdn-clients/pom.xml
+++ b/so-sdn-clients/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-sdn-clients</artifactId>
diff --git a/so-simulator/pom.xml b/so-simulator/pom.xml
index 26a3da451e..c4dc79761f 100644
--- a/so-simulator/pom.xml
+++ b/so-simulator/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.onap.so</groupId>
<artifactId>so</artifactId>
- <version>1.7.1-SNAPSHOT</version>
+ <version>1.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>so-simulator</artifactId>