From fd63587429fbbd96c2cb5d03463b349666181765 Mon Sep 17 00:00:00 2001 From: "waqas.ikram" Date: Tue, 11 Feb 2020 17:40:20 +0000 Subject: [PATCH] Enhancing SO SDC Controller to invoke ONAP-ETSI Catalog APIs Change-Id: I9f0ba05c14478b9165c2c470559567513e1919cf Issue-ID: SO-2406 Signed-off-by: waqas.ikram --- .../onap/so/asdc/etsi/pkg/processor/ErrorCode.java | 50 +++ .../EtsiCatalogPackageOnboadingJobStatus.java | 63 ++++ .../processor/EtsiCatalogPackageOnboardingJob.java | 49 +++ .../EtsiCatalogPackageOnboardingJobDescriptor.java | 74 +++++ .../EtsiCatalogPackageOnboardingRequest.java | 54 ++++ .../pkg/processor/EtsiCatalogServiceProvider.java | 112 +++++++ .../processor/EtsiResourcePackageProcessor.java | 175 ++++++++++ .../HttpRestServiceProviderConfiguration.java | 55 ++++ .../onap/so/asdc/etsi/pkg/processor/JobStatus.java | 60 ++++ .../SdcBasicHttpConfigurationProvider.java | 60 ++++ .../etsi/pkg/processor/SdcResourceProvider.java | 96 ++++++ .../processor/SslBasedHttpClientConfiguration.java | 93 ++++++ .../EtsiCatalogManagerRequestFailureException.java | 40 +++ .../SOL004ResourcePackageFailureException.java | 40 +++ .../SOL004ResourcePackageProcessingException.java | 34 ++ .../installer/heat/ToscaResourceInstaller.java | 11 +- .../java/org/onap/so/asdc/TestApplication.java | 6 +- .../SdcNotificationWithSol004PackageTest.java | 358 +++++++++++++++++++++ .../src/test/resources/application-test.yaml | 8 + .../VENDOR_LICENSE/vendor-license-model.xml | 1 + .../VF_LICENSE/vf-license-model.xml | 1 + .../vgw/ONBOARDED_PACKAGE/vgw6.csar | Bin 0 -> 43363 bytes .../vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar | Bin 0 -> 117852 bytes .../vgw/VENDOR_LICENSE/vendor-license-model.xml | 1 + .../vgw/VF_LICENSE/vf-license-model.xml | 1 + .../vgw/dmaap-notification-message.json | 66 ++++ ...-onboading-job-status-error-package-exists.json | 20 ++ ...catalog-package-onboading-job-status-error.json | 20 ++ ...og-package-onboading-job-status-successful.json | 27 ++ .../vgw/service-Vgwservicev1-csar.csar | Bin 0 -> 122078 bytes .../so/rest/service/HttpRestServiceProvider.java | 32 ++ .../rest/service/HttpRestServiceProviderImpl.java | 50 ++- 32 files changed, 1641 insertions(+), 16 deletions(-) create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java create mode 100644 asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java create mode 100644 asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VF_LICENSE/vf-license-model.xml create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/vgw6.csar create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/VENDOR_LICENSE/vendor-license-model.xml create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json create mode 100644 asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java new file mode 100644 index 0000000000..1714e24a27 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java @@ -0,0 +1,50 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public enum ErrorCode { + + NORMAL("0"), PACKAGE_EXIST("1"), CATALOG_EXCEPTION("2"), SYSTEM_ERROR("3"), UNKNOWN("-1"); + + private String code; + + private ErrorCode(final String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static ErrorCode getErrorCode(final String code) { + for (final ErrorCode errorCode : ErrorCode.values()) { + if (errorCode.getCode().equalsIgnoreCase(code)) { + return errorCode; + } + + } + return UNKNOWN; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java new file mode 100644 index 0000000000..772f81a7fe --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java @@ -0,0 +1,63 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.io.Serializable; +import javax.xml.bind.annotation.XmlElement; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class EtsiCatalogPackageOnboadingJobStatus implements Serializable { + + private static final long serialVersionUID = 1L; + + @XmlElement(name = "jobId") + private String jobId; + + @XmlElement(name = "responseDescriptor") + private EtsiCatalogPackageOnboardingJobDescriptor responseDescriptor; + + public String getJobId() { + return jobId; + } + + public void setJobId(final String jobId) { + this.jobId = jobId; + } + + public EtsiCatalogPackageOnboardingJobDescriptor getResponseDescriptor() { + return responseDescriptor; + } + + public void setResponseDescriptor(final EtsiCatalogPackageOnboardingJobDescriptor responseDescriptor) { + this.responseDescriptor = responseDescriptor; + } + + @Override + public String toString() { + return "EtsiCatalogPackageOnboadingJobStatus [jobId=" + jobId + ", responseDescriptor=" + responseDescriptor + + "]"; + } + + + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java new file mode 100644 index 0000000000..0c7bba6751 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java @@ -0,0 +1,49 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.io.Serializable; +import javax.xml.bind.annotation.XmlElement; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class EtsiCatalogPackageOnboardingJob implements Serializable { + + private static final long serialVersionUID = 1L; + + @XmlElement(name = "jobId") + private String jobId; + + public String getJobId() { + return jobId; + } + + public void setJobId(final String jobId) { + this.jobId = jobId; + } + + @Override + public String toString() { + return "EtsiCatalogPackageOnboardingJob [jobId=" + jobId + "]"; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java new file mode 100644 index 0000000000..b0c07d6f24 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java @@ -0,0 +1,74 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.io.Serializable; +import javax.xml.bind.annotation.XmlElement; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class EtsiCatalogPackageOnboardingJobDescriptor implements Serializable { + + private static final long serialVersionUID = 1L; + + @XmlElement(name = "status") + private String status; + + @XmlElement(name = "statusDescription") + private String statusDescription; + + @XmlElement(name = "errorCode") + private String errorCode; + + public String getStatus() { + return status; + } + + public void setStatus(final String status) { + this.status = status; + } + + public String getStatusDescription() { + return statusDescription; + } + + public void setStatusDescription(final String statusDescription) { + this.statusDescription = statusDescription; + } + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(final String errorCode) { + this.errorCode = errorCode; + } + + @Override + public String toString() { + return "EtsiCatalogPackageOnboardingJobDescriptor [status=" + status + ", statusDescription=" + + statusDescription + ", errorCode=" + errorCode + "]"; + } + + + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java new file mode 100644 index 0000000000..79fd1398a0 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java @@ -0,0 +1,54 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.io.Serializable; +import javax.xml.bind.annotation.XmlElement; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class EtsiCatalogPackageOnboardingRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + @XmlElement(name = "csarId") + private String csarId; + + public EtsiCatalogPackageOnboardingRequest csarId(final String csarId) { + this.csarId = csarId; + return this; + } + + public String getCsarId() { + return csarId; + } + + public void setCsarId(final String csarId) { + this.csarId = csarId; + } + + @Override + public String toString() { + return "EtsiCatalogPackageOnboardingRequest [csarId=" + csarId + "]"; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java new file mode 100644 index 0000000000..f6a303291f --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java @@ -0,0 +1,112 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import static org.onap.so.asdc.etsi.pkg.processor.HttpRestServiceProviderConfiguration.ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN; +import org.onap.so.asdc.etsi.pkg.processor.exceptions.EtsiCatalogManagerRequestFailureException; +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.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Service +public class EtsiCatalogServiceProvider { + + private static final Logger LOGGER = LoggerFactory.getLogger(EtsiCatalogServiceProvider.class); + + private final HttpRestServiceProvider httpServiceProvider; + + @Value("${etsi-catalog-manager.endpoint:http://modeling-etsicatalog.onap:8806/api/catalog/v1}") + private String etsiCatalogManagerEndpoint; + + @Autowired + public EtsiCatalogServiceProvider( + @Qualifier(ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider) { + this.httpServiceProvider = httpServiceProvider; + } + + public EtsiCatalogPackageOnboardingJob onBoardResource( + final EtsiCatalogPackageOnboardingRequest packageOnboardingRequest) { + try { + final String url = etsiCatalogManagerEndpoint + "/vnfpackages"; + final ResponseEntity responseEntity = httpServiceProvider.postHttpRequest( + packageOnboardingRequest, url, getHeaders(), EtsiCatalogPackageOnboardingJob.class); + + if (responseEntity.getStatusCode().is2xxSuccessful()) { + if (responseEntity.hasBody()) { + return responseEntity.getBody(); + } + LOGGER.error("Received response without body"); + } + final String message = "Unexpected status code received " + responseEntity.getStatusCode(); + LOGGER.error(message); + throw new EtsiCatalogManagerRequestFailureException(message); + + } catch (final InvalidRestRequestException | RestProcessingException exception) { + final String message = "Unable to process onboarding request"; + LOGGER.error(message, exception); + throw new EtsiCatalogManagerRequestFailureException(message); + } + + } + + public EtsiCatalogPackageOnboadingJobStatus getJobStatus(final String jobId) { + try { + final String url = etsiCatalogManagerEndpoint + "/jobs/" + jobId; + + final ResponseEntity responseEntity = + httpServiceProvider.getHttpResponse(url, getHeaders(), EtsiCatalogPackageOnboadingJobStatus.class); + + if (responseEntity.getStatusCode().is2xxSuccessful()) { + if (responseEntity.hasBody()) { + return responseEntity.getBody(); + } + LOGGER.error("Received response without body"); + } + final String message = + "Unexpected status code received while getting job status " + responseEntity.getStatusCode(); + LOGGER.error(message); + throw new EtsiCatalogManagerRequestFailureException(message); + } catch (final InvalidRestRequestException | RestProcessingException exception) { + final String message = "Unable to get job status"; + LOGGER.error(message, exception); + throw new EtsiCatalogManagerRequestFailureException(message); + } + + } + + private HttpHeaders getHeaders() { + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + return headers; + } +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java new file mode 100644 index 0000000000..bb7197b7a4 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java @@ -0,0 +1,175 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.time.Instant; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import org.onap.so.asdc.etsi.pkg.processor.exceptions.SOL004ResourcePackageFailureException; +import org.onap.so.asdc.etsi.pkg.processor.exceptions.SOL004ResourcePackageProcessingException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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; + + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Service +public class EtsiResourcePackageProcessor { + + private final static Logger LOGGER = LoggerFactory.getLogger(EtsiResourcePackageProcessor.class); + private static final String ONBOARDED_PACKAGE_DIR_PATH = "Artifacts/Deployment/ONBOARDED_PACKAGE"; + private final SdcResourceProvider sdcResourceProvider; + private final EtsiCatalogServiceProvider catalogServiceProvider; + private static final int SLEEP_TIME_IN_SECONDS = 5; + + private static final ImmutableSet JOB_FINISHED_STATES = + ImmutableSet.of(JobStatus.FINISHED, JobStatus.ERROR, JobStatus.TIMEOUT); + + @Value("${etsi-catalog-manager.rest.timeoutInSeconds:300}") + private int timeOutInSeconds; + + @Autowired + public EtsiResourcePackageProcessor(final SdcResourceProvider sdcResourceProvider, + final EtsiCatalogServiceProvider catalogServiceProvider) { + this.sdcResourceProvider = sdcResourceProvider; + this.catalogServiceProvider = catalogServiceProvider; + } + + public void processPackageIfExists(final String vnfUuid) { + LOGGER.debug("Processing vnf with UUID: {} ", vnfUuid); + try { + final Optional optional = sdcResourceProvider.getVnfResource(vnfUuid); + if (optional.isPresent()) { + final byte[] resourceContent = optional.get(); + + if (containsOnBoardedSol004Package(resourceContent)) { + final EtsiCatalogPackageOnboardingJob onboardingJob = catalogServiceProvider + .onBoardResource(new EtsiCatalogPackageOnboardingRequest().csarId(vnfUuid)); + LOGGER.debug("Successfully created job with id: {} to onboard vnf with UUID: {}", + onboardingJob.getJobId(), vnfUuid); + + if (onboardingJob.getJobId() == null) { + throw new SOL004ResourcePackageFailureException( + "Received invalid jobId " + onboardingJob.getJobId()); + } + + final Optional jobStatusOptional = + waitForJobToFinish(onboardingJob); + + if (!jobStatusOptional.isPresent()) { + final String message = "Job status timeout reached failed to onboard vnf with UUID: " + vnfUuid; + LOGGER.debug(message, vnfUuid); + throw new SOL004ResourcePackageFailureException(message); + } + + final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus = jobStatusOptional.get(); + final JobStatus jobStatus = getJobStatus(onboadingJobStatus); + final ErrorCode errorCode = getErrorCode(onboadingJobStatus); + + LOGGER.debug("Final job status: {}, error code: {}", jobStatus, errorCode); + if (!JobStatus.FINISHED.equals(jobStatus) && !ErrorCode.PACKAGE_EXIST.equals(errorCode)) { + final String message = "Failed to onboard vnf with UUID: " + vnfUuid + " job status: " + + jobStatus + " errorCode: " + errorCode; + LOGGER.debug(message, vnfUuid); + throw new SOL004ResourcePackageFailureException(message); + } + LOGGER.debug("Successfully onboarded package in ETSI catalog .. "); + } + + } + } catch (final Exception exception) { + final String message = "Unable to process resource received from SDC"; + LOGGER.error(message, exception); + throw new SOL004ResourcePackageProcessingException(message, exception); + } + + } + + private Optional waitForJobToFinish( + final EtsiCatalogPackageOnboardingJob onboardingJob) throws InterruptedException { + JobStatus currentJobStatus = null; + final long startTimeInMillis = System.currentTimeMillis(); + final long timeOutTime = startTimeInMillis + TimeUnit.SECONDS.toMillis(timeOutInSeconds); + + LOGGER.debug("Will wait till {} for {} job to finish", Instant.ofEpochMilli(timeOutTime).toString(), + onboardingJob.getJobId()); + + while (timeOutTime > System.currentTimeMillis()) { + + final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus = + catalogServiceProvider.getJobStatus(onboardingJob.getJobId()); + LOGGER.debug("Current job status {} ", onboadingJobStatus); + + currentJobStatus = getJobStatus(onboadingJobStatus); + if (JOB_FINISHED_STATES.contains(currentJobStatus)) { + return Optional.of(onboadingJobStatus); + } + + LOGGER.debug("Onboarding not finished yet, will try again in {} seconds", SLEEP_TIME_IN_SECONDS); + TimeUnit.SECONDS.sleep(SLEEP_TIME_IN_SECONDS); + + } + LOGGER.warn("Timeout current job status: {}", currentJobStatus); + return Optional.empty(); + } + + private boolean containsOnBoardedSol004Package(final byte[] resourceContent) throws IOException { + try (final ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(resourceContent))) { + ZipEntry entry; + while ((entry = zipStream.getNextEntry()) != null) { + if (entry.getName() != null && entry.getName().contains(ONBOARDED_PACKAGE_DIR_PATH)) { + LOGGER.debug("Found entry: {} that contains {} in name", entry.getName(), + ONBOARDED_PACKAGE_DIR_PATH); + return true; + } + } + + } + LOGGER.debug("Unable to find {} dir in downloaded package", ONBOARDED_PACKAGE_DIR_PATH); + return false; + } + + private JobStatus getJobStatus(final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus) { + if (onboadingJobStatus.getResponseDescriptor() != null) { + return JobStatus.getJobStatus(onboadingJobStatus.getResponseDescriptor().getStatus()); + } + LOGGER.warn("Found null ResponseDescriptor {}", onboadingJobStatus); + return JobStatus.UNKNOWN; + } + + private ErrorCode getErrorCode(final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus) { + if (onboadingJobStatus.getResponseDescriptor() != null) { + return ErrorCode.getErrorCode(onboadingJobStatus.getResponseDescriptor().getErrorCode()); + } + LOGGER.warn("Found null ResponseDescriptor {}", onboadingJobStatus); + return ErrorCode.UNKNOWN; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java new file mode 100644 index 0000000000..1afda0d29f --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java @@ -0,0 +1,55 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import static org.onap.so.asdc.etsi.pkg.processor.SslBasedHttpClientConfiguration.SSL_BASED_CONFIGURABLE_REST_TEMPLATE; +import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; +import org.onap.so.rest.service.HttpRestServiceProvider; +import org.onap.so.rest.service.HttpRestServiceProviderImpl; +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; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Configuration +public class HttpRestServiceProviderConfiguration { + + public static final String ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN = "etsiCatalogHttpRestServiceProviderBean"; + public static final String SDC_HTTP_REST_SERVICE_PROVIDER_BEAN = "sdcHttpRestServiceProviderBean"; + + @Bean + @Qualifier(ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN) + public HttpRestServiceProvider etsiCataloghttpRestServiceProvider( + @Qualifier(CONFIGURABLE_REST_TEMPLATE) final RestTemplate restTemplate) { + return new HttpRestServiceProviderImpl(restTemplate); + } + + @Bean + @Qualifier(SDC_HTTP_REST_SERVICE_PROVIDER_BEAN) + public HttpRestServiceProvider sdchttpRestServiceProvider( + @Qualifier(SSL_BASED_CONFIGURABLE_REST_TEMPLATE) final RestTemplate restTemplate) { + return new HttpRestServiceProviderImpl(restTemplate); + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java new file mode 100644 index 0000000000..cf09b15539 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java @@ -0,0 +1,60 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public enum JobStatus { + + STARTED("started"), + TIMEOUT("timeout"), + FINISHED("finished"), + PARTLY_FINISHED("partly_finished"), + PROCESSING("processing"), + ERROR("error"), + UNKNOWN("unknown"); + + private String value; + + private JobStatus(final String value) { + this.value = value; + } + + public String getValue() { + return value; + } + + @Override + public String toString() { + return this.value; + } + + public static JobStatus getJobStatus(final String jobStatus) { + for (final JobStatus status : JobStatus.values()) { + if (status.getValue().equalsIgnoreCase(jobStatus)) { + return status; + } + } + return JobStatus.UNKNOWN; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java new file mode 100644 index 0000000000..19375e265f --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java @@ -0,0 +1,60 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import org.apache.commons.codec.binary.Base64; +import org.onap.so.utils.CryptoUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Configuration +public class SdcBasicHttpConfigurationProvider { + + @Value("${sdc.endpoint:https://sdc-be.onap:8443}") + private String endPoint; + + @Value("${sdc.username:mso}") + private String username; + + @Value(value = "${sdc.password:76966BDD3C7414A03F7037264FF2E6C8EEC6C28F2B67F2840A1ED857C0260FEE731D73F47F828E5527125D29FD25D3E0DE39EE44C058906BF1657DE77BF897EECA93BDC07FA64F}") + private String password; + + @Value(value = "${sdc.key:566B754875657232314F5548556D3665}") + private String key; + + + public String getBasicAuthorization() throws GeneralSecurityException { + final String auth = username + ":" + CryptoUtils.decrypt(password, key); + final byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1)); + return "Basic " + new String(encodedAuth); + } + + public String getEndPoint() { + return endPoint; + } + + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java new file mode 100644 index 0000000000..0cd0aba9c3 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java @@ -0,0 +1,96 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import static org.onap.so.asdc.etsi.pkg.processor.HttpRestServiceProviderConfiguration.SDC_HTTP_REST_SERVICE_PROVIDER_BEAN; +import static org.springframework.http.HttpHeaders.ACCEPT; +import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE; +import java.security.GeneralSecurityException; +import java.util.Optional; +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.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +@Service +public class SdcResourceProvider { + private final static Logger LOGGER = LoggerFactory.getLogger(SdcResourceProvider.class); + + private static final String SERVICE_NAME = "SO-SDC-CONTROLLER"; + + private final HttpRestServiceProvider httpRestServiceProvider; + + private final SdcBasicHttpConfigurationProvider sdcBasicHttpConfigurationProvider; + + @Autowired + public SdcResourceProvider( + @Qualifier(SDC_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpRestServiceProvider, + final SdcBasicHttpConfigurationProvider sdcBasicHttpConfigurationProvider) { + this.httpRestServiceProvider = httpRestServiceProvider; + this.sdcBasicHttpConfigurationProvider = sdcBasicHttpConfigurationProvider; + } + + public Optional getVnfResource(final String resourceId) { + LOGGER.debug("Will get resource from SDC using resource id: {}", resourceId); + try { + final HttpHeaders headers = getHttpHeaders(); + headers.add(ACCEPT, APPLICATION_OCTET_STREAM_VALUE); + final String url = getSdcResourceEndPoint(resourceId); + LOGGER.debug("will invoke url: {} to get resource ", url); + final ResponseEntity responseEntity = + httpRestServiceProvider.getHttpResponse(url, headers, byte[].class); + + if (responseEntity.getStatusCode().is2xxSuccessful()) { + if (responseEntity.hasBody()) { + return Optional.of(responseEntity.getBody()); + } + LOGGER.error("Received response without body"); + } + LOGGER.error("Unexpected Status code received : {}", responseEntity.getStatusCode()); + return Optional.empty(); + } catch (final Exception exception) { + LOGGER.error("Unable to get {} resource from SDC", resourceId, exception); + return Optional.empty(); + } + } + + private String getSdcResourceEndPoint(final String resourceId) { + return sdcBasicHttpConfigurationProvider.getEndPoint() + "/sdc/v1/catalog/resources/" + resourceId + + "/toscaModel"; + } + + + private HttpHeaders getHttpHeaders() throws GeneralSecurityException { + final HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.AUTHORIZATION, sdcBasicHttpConfigurationProvider.getBasicAuthorization()); + headers.add("X-ECOMP-InstanceID", SERVICE_NAME); + headers.add("X-FromAppId", SERVICE_NAME); + return headers; + } +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java new file mode 100644 index 0000000000..88c21524e9 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java @@ -0,0 +1,93 @@ +/*- + * ============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.asdc.etsi.pkg.processor; + +import java.security.NoSuchAlgorithmException; +import java.util.concurrent.TimeUnit; +import javax.net.ssl.SSLContext; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.onap.logging.filter.spring.SpringClientPayloadFilter; +import org.onap.so.configuration.rest.HttpClientConnectionConfiguration; +import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter; +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.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 SslBasedHttpClientConfiguration { + private final static Logger LOGGER = LoggerFactory.getLogger(EtsiResourcePackageProcessor.class); + + + public static final String SSL_BASED_CONFIGURABLE_REST_TEMPLATE = "sslBasedConfigurableRestTemplate"; + private final HttpClientConnectionConfiguration clientConnectionConfiguration; + + @Autowired + public SslBasedHttpClientConfiguration(final HttpClientConnectionConfiguration clientConnectionConfiguration) { + this.clientConnectionConfiguration = clientConnectionConfiguration; + } + + @Bean + @Qualifier(SSL_BASED_CONFIGURABLE_REST_TEMPLATE) + public RestTemplate sslBasedConfigurableRestTemplate() { + final RestTemplate restTemplate = + new RestTemplate(new BufferingClientHttpRequestFactory(httpComponentsClientHttpRequestFactory())); + restTemplate.getInterceptors().add(new SOSpringClientFilter()); + restTemplate.getInterceptors().add((new SpringClientPayloadFilter())); + return restTemplate; + } + + private HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() { + try { + LOGGER.debug("Setting up HttpComponentsClientHttpRequestFactory with default SSL Context"); + return new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create() + .setConnectionManager(getConnectionManager()) + .setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute()) + .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections()) + .setDefaultRequestConfig(getRequestConfig()).setSSLContext(SSLContext.getDefault()).build()); + + } catch (final NoSuchAlgorithmException exception) { + LOGGER.error("Failed to create HttpComponentsClientHttpRequestFactory with default SSL Context", exception); + throw new RuntimeException(exception); + } + } + + private PoolingHttpClientConnectionManager getConnectionManager() { + return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(), + TimeUnit.MINUTES); + } + + private RequestConfig getRequestConfig() { + return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds()) + .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build(); + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java new file mode 100644 index 0000000000..4f2e5039d7 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java @@ -0,0 +1,40 @@ +/*- + * ============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.asdc.etsi.pkg.processor.exceptions; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class EtsiCatalogManagerRequestFailureException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public EtsiCatalogManagerRequestFailureException(final String message) { + super(message); + } + + @Override + public synchronized Throwable fillInStackTrace() { + return this; + } + + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java new file mode 100644 index 0000000000..8e05a50f32 --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java @@ -0,0 +1,40 @@ +/*- + * ============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.asdc.etsi.pkg.processor.exceptions; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class SOL004ResourcePackageFailureException extends RuntimeException { + + private static final long serialVersionUID = 5834657185124807797L; + + public SOL004ResourcePackageFailureException(final String message) { + super(message); + + } + + @Override + public synchronized Throwable fillInStackTrace() { + return this; + } + +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java new file mode 100644 index 0000000000..0e9f1ea9dc --- /dev/null +++ b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java @@ -0,0 +1,34 @@ +/*- + * ============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.asdc.etsi.pkg.processor.exceptions; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class SOL004ResourcePackageProcessingException extends RuntimeException { + + private static final long serialVersionUID = 4860501744379116092L; + + public SOL004ResourcePackageProcessingException(final String message, final Throwable cause) { + super(message, cause); + + } +} diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java index 240bb83862..263118d1b3 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java @@ -39,7 +39,6 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import org.onap.so.logger.LoggingAnchor; import org.hibernate.exception.ConstraintViolationException; import org.hibernate.exception.LockAcquisitionException; import org.onap.sdc.api.notification.IArtifactInfo; @@ -63,6 +62,7 @@ import org.onap.sdc.toscaparser.api.parameters.Input; import org.onap.sdc.utils.DistributionStatusEnum; import org.onap.so.asdc.client.ASDCConfiguration; import org.onap.so.asdc.client.exceptions.ArtifactInstallerException; +import org.onap.so.asdc.etsi.pkg.processor.EtsiResourcePackageProcessor; import org.onap.so.asdc.installer.ASDCElementInfo; import org.onap.so.asdc.installer.BigDecimalVersion; import org.onap.so.asdc.installer.IVfModuleData; @@ -113,7 +113,6 @@ import org.onap.so.db.catalog.data.repository.CollectionResourceCustomizationRep import org.onap.so.db.catalog.data.repository.CollectionResourceRepository; import org.onap.so.db.catalog.data.repository.ConfigurationResourceCustomizationRepository; import org.onap.so.db.catalog.data.repository.ConfigurationResourceRepository; -import org.onap.so.db.catalog.data.repository.CvnfcConfigurationCustomizationRepository; import org.onap.so.db.catalog.data.repository.CvnfcCustomizationRepository; import org.onap.so.db.catalog.data.repository.ExternalServiceToInternalServiceRepository; import org.onap.so.db.catalog.data.repository.HeatEnvironmentRepository; @@ -140,6 +139,7 @@ import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatu import org.onap.so.db.request.data.repository.WatchdogDistributionStatusRepository; import org.onap.so.db.request.data.repository.WatchdogServiceModVerIdLookupRepository; import org.onap.so.logger.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -147,9 +147,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.ObjectOptimisticLockingFailureException; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.util.CollectionUtils; @Component public class ToscaResourceInstaller { @@ -273,6 +273,9 @@ public class ToscaResourceInstaller { @Autowired protected WorkflowResource workflowResource; + @Autowired + protected EtsiResourcePackageProcessor etsiResourcePackageProcessor; + protected static final Logger logger = LoggerFactory.getLogger(ToscaResourceInstaller.class); public boolean isCsarAlreadyDeployed(ToscaResourceStructure toscaResourceStructure) @@ -456,6 +459,8 @@ public class ToscaResourceInstaller { if (ALLOTTED_RESOURCE.equalsIgnoreCase(category)) { arEntityDetails.add(vfEntityDetails); } + final String vnfUuid = metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID); + etsiResourcePackageProcessor.processPackageIfExists(vnfUuid); processVfModules(vfEntityDetails, toscaResourceStruct, vfResourceStructure, service, metadata); } diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java index e25de9c3d4..1a2e385121 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java @@ -31,12 +31,14 @@ import org.springframework.context.annotation.Profile; @SpringBootApplication @Profile("test") -@ComponentScan(basePackages = {"org.onap.so.asdc", "org.onap.so.security"}, +@ComponentScan( + basePackages = {"org.onap.so.asdc", "org.onap.so.security", "org.onap.so.rest.service", + "org.onap.so.configuration.rest", "org.onap.so.client"}, excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class), @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = RequestsDBHelper.class), @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = InfraActiveRequestsRepositoryImpl.class)}) public class TestApplication { - public static void main(String... args) { + public static void main(final String... args) { SpringApplication.run(TestApplication.class, args); System.getProperties().setProperty("mso.db", "MARIADB"); System.getProperties().setProperty("server.name", "Springboot"); diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java new file mode 100644 index 0000000000..cb5bd0f51a --- /dev/null +++ b/asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java @@ -0,0 +1,358 @@ +/*- + * ============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.asdc.client; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; +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.post; +import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; +import static org.onap.sdc.utils.DistributionStatusEnum.COMPONENT_DONE_ERROR; +import static org.onap.sdc.utils.DistributionStatusEnum.COMPONENT_DONE_OK; +import static org.springframework.http.HttpHeaders.ACCEPT; +import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.so.asdc.BaseTest; +import org.onap.so.asdc.client.exceptions.ASDCControllerException; +import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; +import org.onap.so.db.catalog.data.repository.ServiceRepository; +import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus; +import org.onap.so.db.request.beans.WatchdogComponentDistributionStatusId; +import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import com.google.gson.GsonBuilder; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class SdcNotificationWithSol004PackageTest extends BaseTest { + + private final static Logger LOGGER = LoggerFactory.getLogger(SdcNotificationWithSol004PackageTest.class); + private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_URL = "/api/catalog/v1/vnfpackages"; + private static final String COMPONENT_NAME = "SO"; + private static final String CSAR_ID = "8f0b72e1-b6d6-42b6-a808-c60b17f04d7a"; + private static final String SDC_GET_RESOURCE_URL = "/sdc/v1/catalog/resources/" + CSAR_ID + "/toscaModel"; + private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST = "{\"csarId\": \"" + CSAR_ID + "\"}"; + private static final String DISTRIBUTION_ID = "35f20eb9-238a-4cc2-96dc-0a08f71bc209"; + private static final String VGW_RESOURCE_PATH = "src/test/resources/resource-examples/vgw"; + private static final String SERVICE_UUID = "e051ff77-fb79-451c-8457-1cbf94e4db8f"; + private static final String SERVICE_INVARIANT_UUID = "c2ce924f-0aa1-4777-9b42-c0fec006a883"; + private static final String JOB_ID = "57c13120-0a03-4d2e-837a-7c41d61e4a30"; + private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL = "/api/catalog/v1/jobs/" + JOB_ID; + private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE = "{\"jobId\": \"" + JOB_ID + "\"}"; + + @Autowired + private ASDCController asdcController; + + private DistributionClientEmulator distributionClient; + + @Autowired + private WatchdogComponentDistributionStatusRepository watchdogComponentDistributionStatusRepository; + + @Autowired + protected ServiceRepository serviceRepository; + + @Before + public void setUp() { + distributionClient = new DistributionClientEmulator(); + distributionClient.setResourcePath(getAbsolutePath(VGW_RESOURCE_PATH)); + asdcController.setDistributionClient(distributionClient); + try { + asdcController.initASDC(); + } catch (final ASDCControllerException controllerException) { + LOGGER.error(controllerException.getMessage(), controllerException); + fail(controllerException.getMessage()); + } + } + + @After + public void shutDown() { + try { + if (serviceRepository.existsById(SERVICE_UUID)) { + LOGGER.debug("Deleting existing service using {} ", SERVICE_UUID); + serviceRepository.deleteById(SERVICE_UUID); + } + + final WatchdogComponentDistributionStatusId distributionId = new WatchdogComponentDistributionStatusId(); + distributionId.setDistributionId(DISTRIBUTION_ID); + distributionId.setComponentName(COMPONENT_NAME); + if (watchdogComponentDistributionStatusRepository.existsById(distributionId)) { + LOGGER.debug("Deleting existing WatchdogComponentDistributionStatus using {} ", distributionId); + watchdogComponentDistributionStatusRepository.deleteById(distributionId); + } + asdcController.closeASDC(); + } catch (final ASDCControllerException asdcControllerException) { + LOGGER.error(asdcControllerException.getMessage(), asdcControllerException); + fail(asdcControllerException.getMessage()); + } + } + + @Test + public void testTreatNotification_vgwServiceContainingSol004Package_successfullyOnboard() throws IOException { + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE))); + + wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)) + .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), + "etsi-catalog-package-onboading-job-status-successful.json")))))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST))); + + verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))); + } + + @Test + public void testTreatNotification_vgwServiceUnableToGeSdcResource_successfullyOnboard() throws IOException { + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer + .stubFor(get(SDC_GET_RESOURCE_URL).willReturn(aResponse().withStatus(HttpStatus.NOT_FOUND.value())) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + } + + @Test + public void testTreatNotification_vgwServiceContainingNonEtsiSdcResource_successfullyOnboard() throws IOException { + + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "service-Vgwservicev1-csar.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + } + + @Test + public void testTreatNotification_vgwServiceContainingSol004Package_onnboardRequestToEtsiCatalogReturnsBadGatway_distributionStatusError() + throws IOException { + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .willReturn(aResponse().withStatus(HttpStatus.BAD_GATEWAY.value()))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST))); + + } + + @Test + public void testTreatNotification_vgwServiceContainingSol004Package_getJobStatusReturnsBadGatway_distributionStatusError() + throws IOException { + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE))); + + wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)) + .willReturn(aResponse().withStatus(HttpStatus.BAD_GATEWAY.value()))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST))); + + verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))); + + } + + @Test + public void testTreatNotification_vgwServiceContainingSol004Package_getJobStatusBodyWithStatusError_distributionStatusError() + throws IOException { + + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE))); + + wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)) + .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), + "etsi-catalog-package-onboading-job-status-error.json")))))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST))); + + verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))); + + + } + + @Test + public void testTreatNotification_vgwServiceContainingSol004PackageAndPackageAlreadyExistsInEtsiCatalog_successfullyOnboard() + throws IOException { + initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID); + + wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL) + .willReturn(aResponse().withBody(getFileContent( + Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar")))) + .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE))); + + wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE))); + + wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)) + .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), + "etsi-catalog-package-onboading-job-status-error-package-exists.json")))))); + + asdcController.treatNotification(getNotificationDataImplObject()); + + final List distributionList = + watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID); + assertNotNull(distributionList); + assertEquals(1, distributionList.size()); + final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0); + assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus()); + assertEquals(COMPONENT_NAME, distributionStatus.getComponentName()); + + verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL)) + .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST))); + + verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))); + } + + + private byte[] getFileContent(final Path path) throws IOException { + return Files.readAllBytes(path); + } + + private NotificationDataImpl getNotificationDataImplObject() throws IOException { + final Path filePath = Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "dmaap-notification-message.json"); + final byte[] bytes = Files.readAllBytes(filePath); + + return new GsonBuilder().setPrettyPrinting().create().fromJson(new String(bytes), NotificationDataImpl.class); + } + + /** + * Mock the AAI using wireshark. + */ + private void initMockAaiServer(final String serviceUuid, final String serviceInvariantUuid) { + final String modelEndpoint = "/aai/v19/service-design-and-creation/models/model/" + serviceInvariantUuid + + "/model-vers/model-ver/" + serviceUuid + "?depth=0"; + + wireMockServer.stubFor(post(urlEqualTo(modelEndpoint)).willReturn(ok())); + } + + private String getAbsolutePath(final String path) { + final File file = new File(path); + return file.getAbsolutePath(); + } +} diff --git a/asdc-controller/src/test/resources/application-test.yaml b/asdc-controller/src/test/resources/application-test.yaml index 9fa20550db..60cd2d9f2a 100644 --- a/asdc-controller/src/test/resources/application-test.yaml +++ b/asdc-controller/src/test/resources/application-test.yaml @@ -102,3 +102,11 @@ mso: endpoint: http://localhost:${wiremock.server.port} config: defaultpath: src/test/resources + +sdc: + endpoint: http://localhost:${wiremock.server.port} + +etsi-catalog-manager: + endpoint: http://localhost:${wiremock.server.port}/api/catalog/v1 + rest: + timeoutInSeconds: 5 diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml new file mode 100644 index 0000000000..6499a58fab --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml @@ -0,0 +1 @@ +VLMd6dea4a3db6b415ba50f17cb3311d04604B01ABDE6CA4A9FBA75ACC023C6FEDA1.0EP23451.0LKGUnique55ddeb1a87be4fbb95a9bd74b4d745ca81117C9B092C4C70AFF76833373CE7F4Absolute23456789 \ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VF_LICENSE/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VF_LICENSE/vf-license-model.xml new file mode 100644 index 0000000000..581a3acb7f --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/VF_LICENSE/vf-license-model.xml @@ -0,0 +1 @@ +VLMfa87b9536b704787981357393f36b3fcEPd6dea4a3db6b415ba50f17cb3311d04604B01ABDE6CA4A9FBA75ACC023C6FEDA23451.0LKGUnique55ddeb1a87be4fbb95a9bd74b4d745ca81117C9B092C4C70AFF76833373CE7F4Absolute234567891.0FG2218d90f94944a94952be83354847631234594 \ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/vgw6.csar b/asdc-controller/src/test/resources/resource-examples/vgw/ONBOARDED_PACKAGE/vgw6.csar new file mode 100644 index 0000000000000000000000000000000000000000..56dbb2bce07bdf97d1d32669307037cb299eb7d1 GIT binary patch literal 43363 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 _UXO}`sVIN} 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.0EP23451.0LKGUnique55ddeb1a87be4fbb95a9bd74b4d745ca81117C9B092C4C70AFF76833373CE7F4Absolute23456789 \ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml new file mode 100644 index 0000000000..581a3acb7f --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml @@ -0,0 +1 @@ +VLMfa87b9536b704787981357393f36b3fcEPd6dea4a3db6b415ba50f17cb3311d04604B01ABDE6CA4A9FBA75ACC023C6FEDA23451.0LKGUnique55ddeb1a87be4fbb95a9bd74b4d745ca81117C9B092C4C70AFF76833373CE7F4Absolute234567891.0FG2218d90f94944a94952be83354847631234594 \ No newline at end of file diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json b/asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json new file mode 100644 index 0000000000..d936cd1144 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json @@ -0,0 +1,66 @@ +{ + "distributionID": "35f20eb9-238a-4cc2-96dc-0a08f71bc209", + "serviceName": "VgwServiceV1", + "serviceVersion": "1.0", + "serviceUUID": "e051ff77-fb79-451c-8457-1cbf94e4db8f", + "serviceDescription": "Test VGW Service", + "serviceInvariantUUID": "c2ce924f-0aa1-4777-9b42-c0fec006a883", + "resources": [ + { + "resourceInstanceName": "VgwVspV1 0", + "resourceName": "VgwVspV1", + "resourceVersion": "1.0", + "resourceType": "VF", + "resourceUUID": "655aa939-d589-4333-8cc6-8fcb15db858a", + "resourceInvariantUUID": "c53a0c91-35f6-40ff-bcda-f75030cfaf2d", + "resourceCustomizationUUID": "db1673e1-351a-4d04-8e2f-84b2b4c52cc7", + "category": "Generic", + "subcategory": "Network Service", + "artifacts": [ + { + "artifactName": "vf-license-model.xml", + "artifactType": "VF_LICENSE", + "artifactURL": "/VF_LICENSE/vf-license-model.xml", + "artifactChecksum": "NjMwZDc0YzhiNDRlZDAyYjIxMmFlM2M0MWRkZjFmNDA\u003d", + "artifactDescription": "VF license file", + "artifactTimeout": 120, + "artifactUUID": "8dda263d-90bb-4b3d-b8e0-0048222dc658", + "artifactVersion": "1" + }, + { + "artifactName": "vgw6.csar", + "artifactType": "ONBOARDED_PACKAGE", + "artifactURL": "/ONBOARDED_PACKAGE/vgw6.csar", + "artifactChecksum": "NjdmNGU3ZDlkODQ0YTUzMTU5NjZmOThiYjMxNTJiNGI\u003d", + "artifactDescription": "Artifact created from csar", + "artifactTimeout": 120, + "artifactUUID": "9e9930b8-898e-4b8b-999e-66c43e1611f4", + "artifactVersion": "1" + }, + { + "artifactName": "vendor-license-model.xml", + "artifactType": "VENDOR_LICENSE", + "artifactURL": "/VENDOR_LICENSE/vendor-license-model.xml", + "artifactChecksum": "NGNmNzU4MDhjN2FjMTJkNWIxMjNkZDZhOWQyYzU0ZjA\u003d", + "artifactDescription": " Vendor license file", + "artifactTimeout": 120, + "artifactUUID": "b3f7a4cf-6a35-4f66-b800-cd4a9a0e9719", + "artifactVersion": "1" + } + ] + } + ], + "serviceArtifacts": [ + { + "artifactName": "service-Vgwservicev1-csar.csar", + "artifactType": "TOSCA_CSAR", + "artifactURL": "/service-Vgwservicev1-csar.csar", + "artifactChecksum": "MzcxNTMwMDhmNGY0MjRkMjFkNzk1MDNjOTVhNjQzMmE\u003d", + "artifactDescription": "TOSCA definition package of the asset", + "artifactTimeout": 0, + "artifactUUID": "0cc70c6e-6ddc-4ecc-8052-d9f1433c14b8", + "artifactVersion": "1" + } + ], + "workloadContext": "Production" +} diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json new file mode 100644 index 0000000000..8dc07b9613 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json @@ -0,0 +1,20 @@ +{ + "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30", + "responseDescriptor": + { + "status": "error", + "progress": "255", + "statusDescription": "VNF package() already exists.", + "errorCode": "1", + "responseId": "2", + "responseHistoryList": [ + { + "status": "processing", + "progress": "5", + "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.", + "errorCode": "0", + "responseId": "1" + } + ] + } +} diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json new file mode 100644 index 0000000000..13f346fb7a --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json @@ -0,0 +1,20 @@ +{ + "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30", + "responseDescriptor": + { + "status": "error", + "progress": "255", + "statusDescription": "Failed to query artifacts(resources) from sdc.", + "errorCode": "0", + "responseId": "2", + "responseHistoryList": [ + { + "status": "processing", + "progress": "5", + "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.", + "errorCode": "0", + "responseId": "1" + } + ] + } +} diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json new file mode 100644 index 0000000000..b5dc1fe4f2 --- /dev/null +++ b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json @@ -0,0 +1,27 @@ +{ + "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30", + "responseDescriptor": + { + "status": "finished", + "progress": "100", + "statusDescription": "CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute successfully.", + "errorCode": "0", + "responseId": "3", + "responseHistoryList": [ + { + "status": "processing", + "progress": "30", + "statusDescription": "Save CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) to database.", + "errorCode": "0", + "responseId": "2" + }, + { + "status": "processing", + "progress": "5", + "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.", + "errorCode": "0", + "responseId": "1" + } + ] + } +} diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar b/asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..51a9e194664e13fbaef8279ea8b4673b18314129 GIT binary patch literal 122078 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 Optional get(final String url, final Class clazz); + /** + * Execute the HTTP GET to the given URI template + * + * @param url the URL + * @param headers request headers + * @param clazz the type of the return value + * @return Returns the body of this entity. + */ + Optional get(final String url, final HttpHeaders headers, final Class clazz); + /** * Execute the HTTP GET to the given URI template * @@ -46,6 +57,15 @@ public interface HttpRestServiceProvider { */ ResponseEntity getHttpResponse(final String url, final Class clazz); + /** + * Execute the HTTP GET to the given URI template + * + * @param url the URL + * @param headers request headers + * @param clazz the type of the return value + * @return Returns the {@link ResponseEntity}. + */ + ResponseEntity getHttpResponse(final String url, final HttpHeaders headers, final Class clazz); /** * Execute the HTTP POST to the given URI template @@ -67,6 +87,18 @@ public interface HttpRestServiceProvider { */ ResponseEntity postHttpRequest(final Object object, final String url, final Class clazz); + /** + * Execute the HTTP POST to the given URI template + * + * @param object the entity (i.e. body) to write to the request + * @param url the URL + * @param clazz the type of the return value + * @param headers request headers + * @return Returns the {@link ResponseEntity}. + */ + ResponseEntity postHttpRequest(final Object object, final String url, final HttpHeaders headers, + final Class clazz); + /** * Execute the HTTP PUT to the given URI template * diff --git a/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java b/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java index 6211b76561..04dd0bbb7a 100644 --- a/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java +++ b/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java @@ -20,8 +20,6 @@ package org.onap.so.rest.service; -import com.google.common.base.Optional; -import org.onap.so.configuration.rest.BasicHttpHeadersProvider; import org.onap.so.configuration.rest.HttpHeadersProvider; import org.onap.so.rest.exceptions.HttpResouceNotFoundException; import org.onap.so.rest.exceptions.InvalidRestRequestException; @@ -36,6 +34,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import com.google.common.base.Optional; /** * A Service to perform HTTP requests @@ -46,16 +45,27 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { private static final Logger LOGGER = LoggerFactory.getLogger(HttpRestServiceProviderImpl.class); private final RestTemplate restTemplate; - private final HttpHeadersProvider httpHeadersProvider; + private final HttpHeaders defaultHttpHeaders; public HttpRestServiceProviderImpl(final RestTemplate restTemplate) { this.restTemplate = restTemplate; - this.httpHeadersProvider = new BasicHttpHeadersProvider(); + this.defaultHttpHeaders = new HttpHeaders(); + } + + public HttpRestServiceProviderImpl(final RestTemplate restTemplate, final HttpHeaders defaultHttpHeaders) { + this.restTemplate = restTemplate; + this.defaultHttpHeaders = defaultHttpHeaders; } + /** + * + * @deprecated this constructor is deprecated in favor of using {@link HttpRestServiceProviderImpl(RestTemplate + * restTemplate, HttpHeaders defaultHttpHeaders)} + */ + @Deprecated public HttpRestServiceProviderImpl(final RestTemplate restTemplate, final HttpHeadersProvider httpHeadersProvider) { this.restTemplate = restTemplate; - this.httpHeadersProvider = httpHeadersProvider; + this.defaultHttpHeaders = httpHeadersProvider.getHttpHeaders(); } @Override @@ -64,10 +74,21 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { return createOptional(response, url, HttpMethod.GET); } + @Override + public Optional get(final String url, final HttpHeaders headers, final Class clazz) { + final ResponseEntity response = invokeHttpRequest(new HttpEntity<>(headers), HttpMethod.GET, url, clazz); + return createOptional(response, url, HttpMethod.GET); + } @Override public ResponseEntity getHttpResponse(final String url, final Class clazz) { - final HttpEntity request = new HttpEntity<>(getHttpHeaders()); + final HttpEntity request = new HttpEntity<>(getDefaultHttpHeaders()); + return invokeHttpRequest(request, HttpMethod.GET, url, clazz); + } + + @Override + public ResponseEntity getHttpResponse(final String url, final HttpHeaders headers, final Class clazz) { + final HttpEntity request = new HttpEntity<>(headers); return invokeHttpRequest(request, HttpMethod.GET, url, clazz); } @@ -79,7 +100,14 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { @Override public ResponseEntity postHttpRequest(final Object object, final String url, final Class clazz) { - final HttpEntity request = new HttpEntity<>(object, getHttpHeaders()); + final HttpEntity request = new HttpEntity<>(object, getDefaultHttpHeaders()); + return invokeHttpRequest(request, HttpMethod.POST, url, clazz); + } + + @Override + public ResponseEntity postHttpRequest(final Object object, final String url, final HttpHeaders headers, + final Class clazz) { + final HttpEntity request = new HttpEntity<>(object, headers); return invokeHttpRequest(request, HttpMethod.POST, url, clazz); } @@ -91,7 +119,7 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { @Override public ResponseEntity putHttpRequest(final Object object, final String url, final Class clazz) { - final HttpEntity request = new HttpEntity<>(object, getHttpHeaders()); + final HttpEntity request = new HttpEntity<>(object, getDefaultHttpHeaders()); return invokeHttpRequest(request, HttpMethod.PUT, url, clazz); } @@ -140,7 +168,7 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { @Override public ResponseEntity deleteHttpRequest(final String url, final Class clazz) { try { - final HttpEntity request = new HttpEntity<>(getHttpHeaders()); + final HttpEntity request = new HttpEntity<>(getDefaultHttpHeaders()); return restTemplate.exchange(url, HttpMethod.DELETE, request, clazz); } catch (final HttpStatusCodeException httpStatusCodeException) { @@ -162,7 +190,7 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { } } - private HttpHeaders getHttpHeaders() { - return httpHeadersProvider.getHttpHeaders(); + private HttpHeaders getDefaultHttpHeaders() { + return defaultHttpHeaders; } } -- 2.16.6