2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.so.apihandlerinfra.tenantisolation.process;
 
  23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 
  24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
 
  25 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
 
  26 import static com.github.tomakehurst.wiremock.client.WireMock.get;
 
  27 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 
  28 import static com.github.tomakehurst.wiremock.client.WireMock.put;
 
  29 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 
  30 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
 
  31 import static org.hamcrest.MatcherAssert.assertThat;
 
  32 import static org.hamcrest.Matchers.startsWith;
 
  33 import static org.junit.Assert.assertEquals;
 
  34 import javax.ws.rs.core.HttpHeaders;
 
  35 import javax.ws.rs.core.MediaType;
 
  36 import org.apache.http.HttpStatus;
 
  37 import org.json.JSONObject;
 
  38 import org.junit.Ignore;
 
  39 import org.junit.Rule;
 
  40 import org.junit.Test;
 
  41 import org.junit.rules.ExpectedException;
 
  42 import org.onap.aaiclient.client.aai.AAIVersion;
 
  43 import org.onap.so.apihandler.common.ErrorNumbers;
 
  44 import org.onap.so.apihandlerinfra.BaseTest;
 
  45 import org.onap.so.apihandlerinfra.exceptions.ApiException;
 
  46 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
 
  47 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
 
  48 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
 
  49 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
 
  50 import org.onap.so.db.request.beans.InfraActiveRequests;
 
  51 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
 
  52 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
 
  53 import org.springframework.beans.factory.annotation.Autowired;
 
  54 import com.fasterxml.jackson.core.JsonProcessingException;
 
  55 import com.fasterxml.jackson.databind.ObjectMapper;
 
  57 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest {
 
  60     private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
 
  62     public ExpectedException thrown = ExpectedException.none();
 
  64     private final String requestId = "TEST_requestId";
 
  65     private final String requestIdOrig = "TEST_requestIdOrig";
 
  66     private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
 
  67     private final String vnfOperationalEnvironmentId = "VNF_operationalEnvironmentId";
 
  68     private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
 
  69     private final String workloadContext = "TEST_workloadContext";
 
  70     private final String recoveryActionRetry = "RETRY";
 
  71     private final String recoveryActionAbort = "ABORT";
 
  72     private final String recoveryActionSkip = "SKIP";
 
  73     private final String serviceModelVersionId = "TEST_serviceModelVersionId";
 
  74     private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
 
  75     private final int retryCountThree = 3;
 
  76     private final int retryCountTwo = 2;
 
  77     private final int retryCountZero = 0;
 
  78     private final String sdcDistributionId1 = "TEST_distributionId1";
 
  79     private final String sdcDistributionId = "TEST_distributionId";
 
  80     private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
 
  81     private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
 
  82     private final String statusSent = "SENT";
 
  83     String json = "{\"operational-environment-status\" : \"INACTIVE\"}";
 
  85     private final ObjectMapper mapper = new ObjectMapper();
 
  88     public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
 
  90         // two entries, both status Ok & retry 0
 
  91         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
  92         serviceModelDb.setRequestId(requestIdOrig);
 
  93         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
  94         serviceModelDb.setWorkloadContext(workloadContext);
 
  95         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
  96         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
  97         serviceModelDb.setRetryCount(retryCountZero);
 
  98         serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
 
  99         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 101         serviceModelDb.setRequestId(requestIdOrig);
 
 102         serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
 
 103         serviceModelDb.setWorkloadContext(workloadContext);
 
 104         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 105         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 106         serviceModelDb.setRetryCount(retryCountZero);
 
 107         serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
 
 108         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 110         InfraActiveRequests iar = new InfraActiveRequests();
 
 111         iar.setRequestId(requestIdOrig);
 
 112         iar.setRequestStatus("PENDING");
 
 114         wireMockServer.stubFor(get(urlPathEqualTo(
 
 115                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 116                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 117                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 118         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 119                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 120                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 122         activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
 
 124         // overall is success
 
 128     public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
 
 130         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 131         serviceModelDb.setRequestId(requestIdOrig);
 
 132         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 133         serviceModelDb.setWorkloadContext(workloadContext);
 
 134         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 135         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 136         serviceModelDb.setRetryCount(retryCountZero);
 
 137         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 138         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 139         wireMockServer.stubFor(get(urlPathEqualTo(
 
 140                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 141                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 142                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 144         InfraActiveRequests iar = new InfraActiveRequests();
 
 145         iar.setRequestId(requestIdOrig);
 
 146         iar.setRequestStatus("PENDING");
 
 148         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 149                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 150                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 153             activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
 
 154         } catch (ApiException e) {
 
 155             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
 
 156             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
 
 157             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
 
 163     public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
 
 165         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 166         serviceModelDb.setRequestId(requestIdOrig);
 
 167         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 168         serviceModelDb.setWorkloadContext(workloadContext);
 
 169         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 170         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 171         serviceModelDb.setRetryCount(retryCountTwo);
 
 172         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 173         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 174         wireMockServer.stubFor(get(urlPathEqualTo(
 
 175                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 176                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 177                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 179         activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
 
 183     public void executionTest_Ok() throws Exception {
 
 185         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 186         serviceModelDb.setRequestId(requestIdOrig);
 
 187         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 188         serviceModelDb.setWorkloadContext(workloadContext);
 
 189         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 190         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 191         serviceModelDb.setRetryCount(retryCountThree);
 
 192         serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
 
 193         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 194         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 196         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 197         distributionDb.setDistributionId(sdcDistributionId);
 
 198         distributionDb.setRequestId(requestIdOrig);
 
 199         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 200         distributionDb.setDistributionIdStatus(statusSent);
 
 201         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 202         distributionDb.setDistributionIdErrorReason(null);
 
 204         // prepare distribution obj
 
 205         Distribution distribution = new Distribution();
 
 206         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
 
 207         request.setDistribution(distribution);
 
 208         request.setDistributionId(sdcDistributionId);
 
 209         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 211         InfraActiveRequests iar = new InfraActiveRequests();
 
 212         iar.setRequestId(requestIdOrig);
 
 213         iar.setRequestStatus("PENDING");
 
 215         wireMockServer.stubFor(get(urlPathEqualTo(
 
 216                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 217                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 218                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 219         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 220                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 221                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 222         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 223                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 224                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 225         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
 
 226                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"RETRY\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
 
 227                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 228                         .withStatus(HttpStatus.SC_OK)));
 
 230         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
 
 231                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
 
 232                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 233                         .withStatus(HttpStatus.SC_OK)));
 
 235         wireMockServer.stubFor(get(urlPathEqualTo("/aai/" + AAIVersion.LATEST
 
 236                 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
 
 237                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 238                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 239         wireMockServer.stubFor(put(urlPathEqualTo("/aai/" + AAIVersion.LATEST
 
 240                 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
 
 241                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 242                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 244         activateVnfStatus.execute(requestId, request);
 
 248     public void executionTest_ERROR_Status_And_RETRY() throws Exception {
 
 250         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 251         serviceModelDb.setRequestId(requestIdOrig);
 
 252         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 253         serviceModelDb.setWorkloadContext(workloadContext);
 
 254         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 255         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 256         serviceModelDb.setRetryCount(retryCountThree);
 
 257         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 258         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 259         wireMockServer.stubFor(get(urlPathEqualTo(
 
 260                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 261                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 262                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 264         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 265         distributionDb.setDistributionId(sdcDistributionId);
 
 266         distributionDb.setRequestId(requestIdOrig);
 
 267         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 268         distributionDb.setDistributionIdStatus(statusError);
 
 269         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 270         distributionDb.setDistributionIdErrorReason(null);
 
 274         // prepare new distribution obj
 
 275         Distribution distribution = new Distribution();
 
 276         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
 
 277         distribution.setErrorReason("Unable to process.");
 
 278         request.setDistribution(distribution);
 
 279         request.setDistributionId(sdcDistributionId);
 
 280         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 282         // prepare sdc return data
 
 283         JSONObject jsonObject = new JSONObject();
 
 284         jsonObject.put("statusCode", "202");
 
 285         jsonObject.put("message", "Success");
 
 286         jsonObject.put("distributionId", sdcDistributionId1);
 
 288         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
 
 289                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
 
 290                         .withStatus(HttpStatus.SC_ACCEPTED)));
 
 291         wireMockServer.stubFor(get(urlPathEqualTo(
 
 292                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 293                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 294                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 295         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 296                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 297                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 298         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
 
 299                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\",\"distributionIdErrorReason\":\"Unable to process.\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
 
 300                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 301                         .withStatus(HttpStatus.SC_OK)));
 
 303         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).willReturn(aResponse()
 
 304                 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).withStatus(HttpStatus.SC_OK)));
 
 306         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
 
 307                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
 
 308                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 309                         .withStatus(HttpStatus.SC_OK)));
 
 311         wireMockServer.stubFor(
 
 312                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 313                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 314                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 315         wireMockServer.stubFor(
 
 316                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 317                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 318                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 320         activateVnfStatus.execute(requestId, request);
 
 324     public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
 
 326         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 327         serviceModelDb.setRequestId(requestIdOrig);
 
 328         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 329         serviceModelDb.setWorkloadContext(workloadContext);
 
 330         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 331         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 332         serviceModelDb.setRetryCount(retryCountZero);
 
 333         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 334         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 336         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 337         distributionDb.setDistributionId(sdcDistributionId);
 
 338         distributionDb.setRequestId(requestIdOrig);
 
 339         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 340         distributionDb.setDistributionIdStatus(statusError);
 
 341         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 342         distributionDb.setDistributionIdErrorReason(null);
 
 346         // prepare distribution obj
 
 347         Distribution distribution = new Distribution();
 
 348         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
 
 349         request.setDistribution(distribution);
 
 350         request.setDistributionId(sdcDistributionId);
 
 351         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 353         JSONObject jsonObject = new JSONObject();
 
 354         jsonObject.put("statusCode", "202");
 
 355         jsonObject.put("message", "Success");
 
 356         jsonObject.put("distributionId", sdcDistributionId);
 
 358         InfraActiveRequests iar = new InfraActiveRequests();
 
 359         iar.setRequestId(requestIdOrig);
 
 360         iar.setRequestStatus("PENDING");
 
 362         wireMockServer.stubFor(get(urlPathEqualTo(
 
 363                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 364                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 365                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 366         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 367                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 368                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 369         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 370                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 371                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 373         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
 
 374                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
 
 375                         .withStatus(HttpStatus.SC_ACCEPTED)));
 
 377         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
 
 378                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
 
 379                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 380                         .withStatus(HttpStatus.SC_OK)));
 
 382         wireMockServer.stubFor(
 
 383                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 384                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 385                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 386         wireMockServer.stubFor(
 
 387                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 388                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 389                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 392             activateVnfStatus.execute(requestId, request);
 
 393         } catch (ApiException e) {
 
 394             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
 
 395             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
 
 396             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
 
 403     public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
 
 405         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 406         serviceModelDb.setRequestId(requestIdOrig);
 
 407         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 408         serviceModelDb.setWorkloadContext(workloadContext);
 
 409         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 410         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 411         serviceModelDb.setRetryCount(retryCountThree);
 
 412         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 413         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 415         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 416         distributionDb.setDistributionId(sdcDistributionId);
 
 417         distributionDb.setRequestId(requestIdOrig);
 
 418         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 419         distributionDb.setDistributionIdStatus(statusError);
 
 420         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 421         distributionDb.setDistributionIdErrorReason(null);
 
 423         // prepare distribution obj
 
 424         Distribution distribution = new Distribution();
 
 425         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
 
 426         distribution.setErrorReason("Unable to process.");
 
 427         request.setDistribution(distribution);
 
 428         request.setDistributionId(sdcDistributionId);
 
 429         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 432         JSONObject jsonMessages = new JSONObject();
 
 433         jsonMessages.put("statusCode", "409");
 
 434         jsonMessages.put("message", "Undefined Error Message!");
 
 435         jsonMessages.put("messageId", "SVC4675");
 
 436         jsonMessages.put("text", "Error: Service state is invalid for this action.");
 
 437         JSONObject jsonServException = new JSONObject();
 
 438         jsonServException.put("serviceException", jsonMessages);
 
 439         JSONObject jsonErrorRequest = new JSONObject();
 
 440         jsonErrorRequest.put("requestError", jsonServException);
 
 442         InfraActiveRequests iar = new InfraActiveRequests();
 
 443         iar.setRequestId(requestIdOrig);
 
 444         iar.setRequestStatus("PENDING");
 
 445         wireMockServer.stubFor(get(urlPathEqualTo(
 
 446                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 447                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 448                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 449         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 450                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 451                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 452         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 453                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 454                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 455         wireMockServer.stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
 
 456                 .withRequestBody(containing("operationalEnvId\":\"VNF_operationalEnvironmentId\""))
 
 457                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 458                         .withStatus(HttpStatus.SC_OK)));
 
 460         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
 
 461                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString())
 
 462                         .withStatus(HttpStatus.SC_CONFLICT)));
 
 464         wireMockServer.stubFor(
 
 465                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 466                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 467                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 468         wireMockServer.stubFor(
 
 469                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 470                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 471                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 474             activateVnfStatus.execute(requestId, request);
 
 475         } catch (ApiException e) {
 
 476             assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
 
 477             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
 
 478             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
 
 483     public void executionTest_ERROR_Status_And_SKIP() throws Exception {
 
 485         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 486         serviceModelDb.setRequestId(requestIdOrig);
 
 487         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 488         serviceModelDb.setWorkloadContext(workloadContext);
 
 489         serviceModelDb.setRecoveryAction(recoveryActionSkip);
 
 490         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 491         serviceModelDb.setRetryCount(retryCountThree);
 
 492         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 493         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 495         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 496         distributionDb.setDistributionId(sdcDistributionId);
 
 497         distributionDb.setRequestId(requestIdOrig);
 
 498         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 499         distributionDb.setDistributionIdStatus(statusError);
 
 500         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 501         distributionDb.setDistributionIdErrorReason(null);
 
 503         // prepare distribution obj
 
 504         OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,
 
 505                 operationalEnvironmentId, serviceModelVersionId);
 
 506         distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
 
 508         Distribution distribution = new Distribution();
 
 509         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
 
 510         request.setDistribution(distribution);
 
 511         request.setDistributionId(sdcDistributionId);
 
 512         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 513         InfraActiveRequests iar = new InfraActiveRequests();
 
 514         iar.setRequestId(requestIdOrig);
 
 515         iar.setRequestStatus("PENDING");
 
 517         wireMockServer.stubFor(get(urlPathEqualTo(
 
 518                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 519                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 520                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 521         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 522                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 523                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 524         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 525                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 526                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 527         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
 
 528                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"SKIP\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
 
 529                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 530                         .withStatus(HttpStatus.SC_OK)));
 
 532         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
 
 533                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
 
 534                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 535                         .withStatus(HttpStatus.SC_OK)));
 
 537         wireMockServer.stubFor(
 
 538                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 539                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 540                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 541         wireMockServer.stubFor(
 
 542                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 543                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 544                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 546         activateVnfStatus.execute(requestId, request);
 
 551     public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
 
 553         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 554         serviceModelDb.setRequestId(requestIdOrig);
 
 555         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 556         serviceModelDb.setWorkloadContext(workloadContext);
 
 557         serviceModelDb.setRecoveryAction(recoveryActionAbort);
 
 558         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 559         serviceModelDb.setRetryCount(retryCountThree);
 
 560         serviceModelDb.setServiceModelVersionDistrStatus(statusError);
 
 561         serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
 
 563         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 564         distributionDb.setDistributionId(sdcDistributionId);
 
 565         distributionDb.setRequestId(requestIdOrig);
 
 566         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 567         distributionDb.setDistributionIdStatus(statusError);
 
 568         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 569         distributionDb.setDistributionIdErrorReason(null);
 
 573         // prepare distribution obj
 
 574         Distribution distribution = new Distribution();
 
 575         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
 
 576         request.setDistribution(distribution);
 
 577         request.setDistributionId(sdcDistributionId);
 
 578         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 580         InfraActiveRequests iar = new InfraActiveRequests();
 
 581         iar.setRequestId(requestIdOrig);
 
 582         iar.setRequestStatus("PENDING");
 
 584         wireMockServer.stubFor(get(urlPathEqualTo(
 
 585                 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
 
 586                         .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 587                                 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
 
 588         wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
 
 589                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 590                         .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
 
 591         wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
 
 592                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 593                         .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
 
 595         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(containing(
 
 596                 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
 
 597                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 598                         .withStatus(HttpStatus.SC_OK)));
 
 600         wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(containing(
 
 601                 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
 
 602                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
 
 603                         .withStatus(HttpStatus.SC_OK)));
 
 605         wireMockServer.stubFor(
 
 606                 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 607                         .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
 
 608                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 609         wireMockServer.stubFor(
 
 610                 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
 
 611                         .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 612                                 .withStatus(HttpStatus.SC_ACCEPTED)));
 
 615             activateVnfStatus.execute(requestId, request);
 
 616         } catch (ApiException e) {
 
 617             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
 
 618             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
 
 619             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
 
 626     public void callSDClientForRetryTest_202() throws Exception {
 
 627         OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
 
 628         serviceModelDb.setRequestId(requestIdOrig);
 
 629         serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
 
 630         serviceModelDb.setWorkloadContext(workloadContext);
 
 631         serviceModelDb.setRecoveryAction(recoveryActionRetry);
 
 632         serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
 
 633         serviceModelDb.setRetryCount(retryCountThree);
 
 634         serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
 
 636         OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
 
 637         distributionDb.setDistributionId(sdcDistributionId);
 
 638         distributionDb.setRequestId(requestIdOrig);
 
 639         distributionDb.setOperationalEnvId(operationalEnvironmentId);
 
 640         distributionDb.setDistributionIdStatus(statusSent);
 
 641         distributionDb.setServiceModelVersionId(serviceModelVersionId);
 
 642         distributionDb.setDistributionIdErrorReason(null);
 
 646         JSONObject jsonObject = new JSONObject();
 
 647         jsonObject.put("statusCode", "202");
 
 648         jsonObject.put("message", "Success");
 
 649         jsonObject.put("distributionId", sdcDistributionId1);
 
 651         // prepare distribution obj
 
 652         Distribution distribution = new Distribution();
 
 653         distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
 
 654         request.setDistribution(distribution);
 
 655         request.setDistributionId(sdcDistributionId);
 
 656         request.setOperationalEnvironmentId(operationalEnvironmentId);
 
 658         wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
 
 659                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
 
 660                         .withStatus(HttpStatus.SC_ACCEPTED)));
 
 662         JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
 
 664         assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
 
 665         assertEquals("Success", jsonResponse.get("message"));
 
 666         assertEquals("202", jsonResponse.get("statusCode"));