From 3646a22c4a6e4b5cee18b3e226bc0acda5a74f71 Mon Sep 17 00:00:00 2001 From: Piotr Borelowski Date: Fri, 20 Dec 2019 15:35:24 +0100 Subject: [PATCH] Implement SOL002 specific changes to CSIT vnfm-simulator Added sending Notification for SOL002 Issue-ID: INT-1404 Signed-off-by: Piotr Borelowski Change-Id: I017c6e6ca03f9d898798e5c8876795ea44f88a55 --- .../org/onap/so/svnfm/simulator/api/VeVnfmApi.java | 86 ++++++++++++++++++++++ .../simulator/services/OperationProgressor.java | 7 +- .../simulator/util/PatternContainedChecker.java | 38 ++++++++++ 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/api/VeVnfmApi.java create mode 100644 plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/util/PatternContainedChecker.java diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/api/VeVnfmApi.java b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/api/VeVnfmApi.java new file mode 100644 index 00000000..14ee2fd3 --- /dev/null +++ b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/api/VeVnfmApi.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * 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.svnfm.simulator.api; + +import com.squareup.okhttp.Call; +import com.squareup.okhttp.Response; +import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.*; +import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.api.DefaultApi; +import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.model.VnfLcmOperationOccurrenceNotification; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class VeVnfmApi extends DefaultApi { + + public VeVnfmApi(final ApiClient apiClient) { + super(apiClient); + } + + public Call lcnVnfLcmOperationOccurrenceNotificationPostCall( + final VnfLcmOperationOccurrenceNotification vnfLcmOperationOccurrenceNotification, + final String contentType, final String authorization, + final ProgressResponseBody.ProgressListener progressListener, + final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + return lcnVnfObjectNotificationPostCall(vnfLcmOperationOccurrenceNotification, + contentType, authorization, progressListener, progressRequestListener); + } + + private Call lcnVnfObjectNotificationPostCall( + final Object body, final String contentType, final String authorization, + final ProgressResponseBody.ProgressListener progressListener, + final ProgressRequestBody.ProgressRequestListener progressRequestListener) throws ApiException { + final List localVarQueryParams = new ArrayList<>(); + final List localVarCollectionQueryParams = new ArrayList<>(); + final Map localVarHeaderParams = new HashMap<>(); + + if (authorization != null) { + localVarHeaderParams.put("Authorization", getApiClient().parameterToString(authorization)); + } + + if (contentType != null) { + localVarHeaderParams.put("Content-Type", getApiClient().parameterToString(contentType)); + } + + final String[] localVarAccepts = new String[]{"application/json"}; + final String localVarAccept = getApiClient().selectHeaderAccept(localVarAccepts); + + if (localVarAccept != null) { + localVarHeaderParams.put("Accept", localVarAccept); + } + + final String[] localVarContentTypes = new String[]{"application/json"}; + final String localVarContentType = getApiClient().selectHeaderContentType(localVarContentTypes); + localVarHeaderParams.put("Content-Type", localVarContentType); + + if (progressListener != null) { + getApiClient().getHttpClient().networkInterceptors().add(ch -> { + final Response originalResponse = ch.proceed(ch.request()); + return originalResponse.newBuilder().body(new ProgressResponseBody(originalResponse.body(), progressListener)).build(); + }); + } + + final Map localVarFormParams = new HashMap<>(); + final String[] localVarAuthNames = new String[0]; + + return getApiClient().buildCall("", "POST", localVarQueryParams, localVarCollectionQueryParams, body, localVarHeaderParams, localVarFormParams, localVarAuthNames, progressRequestListener); + } +} diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/services/OperationProgressor.java b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/services/OperationProgressor.java index 487a931c..ba549009 100644 --- a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/services/OperationProgressor.java +++ b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/services/OperationProgressor.java @@ -44,10 +44,12 @@ import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse200; import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201InstantiatedVnfInfoVnfcResourceInfo; import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.SubscriptionsAuthenticationParamsBasic; import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.SubscriptionsAuthenticationParamsOauth2ClientCredentials; +import org.onap.so.svnfm.simulator.api.VeVnfmApi; import org.onap.so.svnfm.simulator.model.Vnfds; import org.onap.so.svnfm.simulator.repository.VnfOperationRepository; import org.onap.so.svnfm.simulator.config.ApplicationConfig; import org.onap.so.svnfm.simulator.model.VnfOperation; +import org.onap.so.svnfm.simulator.util.PatternContainedChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; @@ -82,11 +84,12 @@ public abstract class OperationProgressor implements Runnable { final ApiClient apiClient = new ApiClient(); String callBackUrl = subscriptionService.getSubscriptions().iterator().next().getCallbackUri(); - callBackUrl = callBackUrl.substring(0, callBackUrl.indexOf("/lcn/")); + final PatternContainedChecker checker = new PatternContainedChecker("/lcn/", callBackUrl); + callBackUrl = checker.getText(); apiClient.setBasePath(callBackUrl); apiClient.setKeyManagers(getKeyManagers()); apiClient.setSslCaCert(getCertificateToTrust()); - notificationClient = new DefaultApi(apiClient); + notificationClient = checker.isContained() ? new DefaultApi(apiClient) : new VeVnfmApi(apiClient); final org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.ApiClient grantApiClient = new org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.ApiClient(); diff --git a/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/util/PatternContainedChecker.java b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/util/PatternContainedChecker.java new file mode 100644 index 00000000..d33026ab --- /dev/null +++ b/plans/so/integration-etsi-testing/so-simulators/vnfm-simulator/vnfm-service/src/main/java/org/onap/so/svnfm/simulator/util/PatternContainedChecker.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * 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.svnfm.simulator.util; + +public class PatternContainedChecker { + + private final boolean contained; + private final String text; + + public PatternContainedChecker(final String pattern, final String text) { + this.contained = text.contains(pattern); + this.text = this.contained ? text.substring(0, text.indexOf(pattern)) : text; + } + + public boolean isContained() { + return contained; + } + + public String getText() { + return text; + } +} -- 2.16.6