X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=plans%2Fso%2Fintegration-etsi-testing%2Fso-simulators%2Fvnfm-simulator%2Fvnfm-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fso%2Fsvnfm%2Fsimulator%2Fservices%2FOperationProgressor.java;h=e6e16e404c1ad5c15738cb74db6169e210c8e1cc;hb=d013ef614cab77cd57c4aa4d8f73b63febc193ba;hp=ba5490095cee2d23b68d50e09feeb3127b08ab2e;hpb=6cf91854a31f9562de405d009224b6f20a855936;p=integration%2Fcsit.git 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 ba549009..e6e16e40 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 @@ -1,7 +1,5 @@ package org.onap.so.svnfm.simulator.services; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -14,6 +12,8 @@ import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; import java.util.List; import java.util.UUID; import javax.net.ssl.HttpsURLConnection; @@ -42,39 +42,40 @@ import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.model.VnfLcmOperatio import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.model.VnfLcmOperationOccurrenceNotification.OperationStateEnum; 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.LccnSubscriptionRequest; 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.model.Vnfds; +import org.onap.so.svnfm.simulator.repository.VnfOperationRepository; import org.onap.so.svnfm.simulator.util.PatternContainedChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; public abstract class OperationProgressor implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(OperationProgressor.class); private static final String CERTIFICATE_TO_TRUST = "so-vnfm-adapter.crt.pem"; - - private Resource keyStoreResource = new ClassPathResource("so-vnfm-simulator.p12"); - private String keyStorePassword = "7Em3&j4.19xYiMelhD5?xbQ."; - protected final VnfOperation operation; protected final SvnfmService svnfmService; + protected final Vnfds vnfds; private final VnfOperationRepository vnfOperationRepository; private final ApplicationConfig applicationConfig; - protected final Vnfds vnfds; private final SubscriptionService subscriptionService; private final DefaultApi notificationClient; private final org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.api.DefaultApi grantClient; + private final Resource keyStoreResource = new ClassPathResource("so-vnfm-simulator.p12"); + private final String keyStorePassword = "7Em3&j4.19xYiMelhD5?xbQ."; public OperationProgressor(final VnfOperation operation, final SvnfmService svnfmService, - final VnfOperationRepository vnfOperationRepository, final ApplicationConfig applicationConfig, - final Vnfds vnfds, final SubscriptionService subscriptionService) { + final VnfOperationRepository vnfOperationRepository, final ApplicationConfig applicationConfig, + final Vnfds vnfds, final SubscriptionService subscriptionService) { this.operation = operation; this.svnfmService = svnfmService; this.vnfOperationRepository = vnfOperationRepository; @@ -83,7 +84,7 @@ public abstract class OperationProgressor implements Runnable { this.subscriptionService = subscriptionService; final ApiClient apiClient = new ApiClient(); - String callBackUrl = subscriptionService.getSubscriptions().iterator().next().getCallbackUri(); + String callBackUrl = getLastLccnSubscriptionRequest().getCallbackUri(); final PatternContainedChecker checker = new PatternContainedChecker("/lcn/", callBackUrl); callBackUrl = checker.getText(); apiClient.setBasePath(callBackUrl); @@ -137,7 +138,6 @@ public abstract class OperationProgressor implements Runnable { buildNotification(NotificationStatusEnum.START, OperationStateEnum.PROCESSING); sendNotification(notificationOfProcessing); - final GrantRequest grantRequest = buildGrantRequest(); final InlineResponse201 grantResponse = sendGrantRequest(grantRequest); final List vnfcs = handleGrantResponse(grantResponse); @@ -154,7 +154,6 @@ public abstract class OperationProgressor implements Runnable { } catch (final Exception exception) { LOGGER.error("Error in OperationProgressor ", exception); } - } private void sleep(final long milliSeconds) { @@ -174,7 +173,7 @@ public abstract class OperationProgressor implements Runnable { } private VnfLcmOperationOccurrenceNotification buildNotification(final NotificationStatusEnum status, - final OperationStateEnum operationState) { + final OperationStateEnum operationState) { final VnfLcmOperationOccurrenceNotification notification = new VnfLcmOperationOccurrenceNotification(); notification.setId(UUID.randomUUID().toString()); notification.setNotificationType(NotificationTypeEnum.VNFLCMOPERATIONOCCURRENCENOTIFICATION); @@ -190,7 +189,6 @@ public abstract class OperationProgressor implements Runnable { vnfInstanceLink.setHref(getVnfLink()); links.setVnfInstance(vnfInstanceLink); - final LcnVnfLcmOperationOccurrenceNotificationLinksVnfInstance operationLink = new LcnVnfLcmOperationOccurrenceNotificationLinksVnfInstance(); operationLink.setHref(getOperationLink()); @@ -222,23 +220,20 @@ public abstract class OperationProgressor implements Runnable { LOGGER.info("Sending notification: {}", notification); try { final SubscriptionsAuthenticationParamsBasic subscriptionAuthentication = - subscriptionService.getSubscriptions().iterator().next().getAuthentication().getParamsBasic(); + getLastLccnSubscriptionRequest().getAuthentication().getParamsBasic(); final String auth = subscriptionAuthentication.getUserName() + ":" + subscriptionAuthentication.getPassword(); final byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1)); String authHeader = "Basic " + new String(encodedAuth); - notificationClient.lcnVnfLcmOperationOccurrenceNotificationPostWithHttpInfo(notification, MediaType.APPLICATION_JSON, authHeader); } catch (final ApiException exception) { LOGGER.error("Error sending notification: " + notification, exception); LOGGER.error("Response code: {}, body: {}, basePath: {}", exception.getCode(), exception.getResponseBody(), notificationClient.getApiClient().getBasePath()); - } } - public GrantRequest buildGrantRequest() { final GrantRequest grantRequest = new GrantRequest(); grantRequest.setVnfInstanceId(operation.getVnfInstanceId()); @@ -275,20 +270,24 @@ public abstract class OperationProgressor implements Runnable { private InlineResponse201 sendGrantRequest(final GrantRequest grantRequest) { LOGGER.info("Sending grant request: {}", grantRequest); try { - final SubscriptionsAuthenticationParamsOauth2ClientCredentials subscriptionAuthentication = - subscriptionService.getSubscriptions().iterator().next().getAuthentication() - .getParamsOauth2ClientCredentials(); + getLastLccnSubscriptionRequest().getAuthentication().getParamsOauth2ClientCredentials(); + SubscriptionsAuthenticationParamsBasic paramsBasic = + getLastLccnSubscriptionRequest().getAuthentication().getParamsBasic(); final String authHeader = applicationConfig.getGrantAuth().equals("oauth") ? "Bearer " + getToken(notificationClient.getApiClient(), subscriptionAuthentication) - : null; + : getAuthorizationHeader(paramsBasic.getUserName(), paramsBasic.getPassword()); + LOGGER.info("Sending grant request with authorization: {}", authHeader); final ApiResponse response = grantClient.grantsPostWithHttpInfo(grantRequest, MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON, authHeader); LOGGER.info("Grant Response: {}", response); return response.getData(); } catch (final org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.ApiException exception) { + LOGGER.error("Status: {}", exception.getCode()); + LOGGER.error("ResponseHeaders: {}", exception.getResponseHeaders()); + LOGGER.error("ResponseBody: {}", exception.getResponseBody()); LOGGER.error("Error sending notification: " + grantRequest, exception); return null; } @@ -307,7 +306,7 @@ public abstract class OperationProgressor implements Runnable { } private String getToken(final ApiClient apiClient, - final SubscriptionsAuthenticationParamsOauth2ClientCredentials oauthClientCredentials) { + final SubscriptionsAuthenticationParamsOauth2ClientCredentials oauthClientCredentials) { final String basePath = apiClient.getBasePath().substring(0, apiClient.getBasePath().indexOf("/so/")); final String tokenUrl = basePath + "/oauth/token?grant_type=client_credentials"; @@ -321,7 +320,6 @@ public abstract class OperationProgressor implements Runnable { connection.connect(); return getResponse(connection).get("access_token").getAsString(); - } catch (IOException exception) { LOGGER.error("Error getting token", exception); return null; @@ -330,7 +328,11 @@ public abstract class OperationProgressor implements Runnable { private String getAuthorizationHeader( final SubscriptionsAuthenticationParamsOauth2ClientCredentials oauthClientCredentials) { - final String auth = oauthClientCredentials.getClientId() + ":" + oauthClientCredentials.getClientPassword(); + return getAuthorizationHeader(oauthClientCredentials.getClientId(), oauthClientCredentials.getClientPassword()); + } + + private String getAuthorizationHeader(final String username, final String password) { + final String auth = username + ":" + password; final byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.UTF_8)); return "Basic " + new String(encodedAuth); } @@ -348,4 +350,16 @@ public abstract class OperationProgressor implements Runnable { return jsonObject; } -} + private LccnSubscriptionRequest getLastLccnSubscriptionRequest() { + final Collection subscriptions = subscriptionService.getSubscriptions(); + final Iterator iterator = subscriptions.iterator(); + + LccnSubscriptionRequest last = null; + + while (iterator.hasNext()) { + last = iterator.next(); + } + + return last; + } +} \ No newline at end of file