2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 European Software Marketing Ltd.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.aai.modelloader.service;
23 import java.util.ArrayList;
24 import java.util.List;
26 import org.onap.aai.modelloader.entity.Artifact;
27 import org.onap.aai.modelloader.entity.catalog.VnfCatalogArtifactHandler;
28 import org.onap.aai.modelloader.entity.model.ModelArtifactHandler;
29 import org.onap.aai.modelloader.restclient.AaiRestClient;
30 import org.springframework.stereotype.Component;
33 * This class is responsible for deploying model and catalog artifacts.
36 public class ArtifactDeploymentManager {
38 private final ModelArtifactHandler modelArtifactHandler;
39 private final VnfCatalogArtifactHandler vnfCatalogArtifactHandler;
40 private final AaiRestClient aaiClient;
42 public ArtifactDeploymentManager(ModelArtifactHandler modelArtifactHandler, VnfCatalogArtifactHandler vnfCatalogArtifactHandler, AaiRestClient aaiClient) {
43 this.modelArtifactHandler = modelArtifactHandler;
44 this.vnfCatalogArtifactHandler = vnfCatalogArtifactHandler;
45 this.aaiClient = aaiClient;
49 * Deploys model and catalog artifacts to A&AI.
51 * @param distributionId data about the notification that is being processed
52 * @param modelArtifacts collection of artifacts that represent yml files found in a TOSCA_CSAR file that have been
53 * converted to XML and also those for model query specs
54 * @param catalogArtifacts collection of artifacts that represent vnf catalog files
55 * @return boolean <code>true</code> if all deployments were successful otherwise <code>false</code>
57 public boolean deploy(final String distributionId, final List<Artifact> modelArtifacts,
58 final List<Artifact> catalogArtifacts) {
60 List<Artifact> completedArtifacts = new ArrayList<>();
61 boolean deploySuccess =
62 modelArtifactHandler.pushArtifacts(modelArtifacts, distributionId, completedArtifacts, aaiClient);
65 modelArtifactHandler.rollback(completedArtifacts, distributionId, aaiClient);
67 List<Artifact> completedImageData = new ArrayList<>();
68 deploySuccess = vnfCatalogArtifactHandler.pushArtifacts(catalogArtifacts, distributionId,
69 completedImageData, aaiClient);
71 modelArtifactHandler.rollback(completedArtifacts, distributionId, aaiClient);
72 vnfCatalogArtifactHandler.rollback(completedImageData, distributionId, aaiClient);