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.openecomp.sdc.be.components.distribution.engine;
23 import org.openecomp.sdc.be.config.ConfigurationManager;
24 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
25 import org.openecomp.sdc.be.model.ArtifactDefinition;
26 import org.openecomp.sdc.be.model.ComponentInstance;
27 import org.openecomp.sdc.be.model.Service;
28 import org.openecomp.sdc.common.api.ArtifactTypeEnum;
30 import java.util.ArrayList;
31 import java.util.Collection;
32 import java.util.List;
34 import java.util.stream.Collectors;
36 public class ArtifactInfoImpl implements IArtifactInfo {
38 private String artifactName;
39 private ArtifactTypeEnum artifactType;
40 private String artifactURL;
41 private String artifactChecksum;
42 private String artifactDescription;
43 private Integer artifactTimeout;
44 private String artifactUUID;
45 private String artifactVersion;
46 private String generatedFromUUID;
47 private List<String> relatedArtifacts;
49 public ArtifactInfoImpl() {
52 private ArtifactInfoImpl(ArtifactDefinition artifactDef, String generatedFromUUID, List<String> relatedArtifacts) {
53 artifactName = artifactDef.getArtifactName();
54 artifactType = ArtifactTypeEnum.findType(artifactDef.getArtifactType());
55 artifactChecksum = artifactDef.getArtifactChecksum();
56 artifactDescription = artifactDef.getDescription();
57 artifactTimeout = artifactDef.getTimeout();
58 artifactUUID = artifactDef.getArtifactUUID();
59 artifactVersion = artifactDef.getArtifactVersion();
60 this.relatedArtifacts = relatedArtifacts;
61 this.generatedFromUUID = generatedFromUUID;
64 public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(Service service, ComponentInstance resourceInstance, Collection<ArtifactDefinition> list) {
65 List<ArtifactInfoImpl> ret = new ArrayList<>();
66 Map<String, List<ArtifactDefinition>> artifactIdToDef = list.stream().collect(Collectors.groupingBy(ArtifactDefinition::getUniqueId));
68 for (ArtifactDefinition artifactDef : list) {
69 String generatedFromUUID = null;
70 if (artifactDef.getGeneratedFromId() != null && !artifactDef.getGeneratedFromId().isEmpty()) {
71 ArtifactDefinition artifactFrom = artifactIdToDef.get(artifactDef.getGeneratedFromId()).get(0);
72 generatedFromUUID = artifactFrom.getArtifactUUID();
74 ArtifactInfoImpl artifactInfoImpl = new ArtifactInfoImpl(artifactDef, generatedFromUUID, getUpdatedRequiredArtifactsFromNamesToUuids(artifactDef, resourceInstance.getDeploymentArtifacts()));
75 String artifactURL = ServiceDistributionArtifactsBuilder.buildResourceInstanceArtifactUrl(service, resourceInstance, artifactDef.getArtifactName());
76 artifactInfoImpl.setArtifactURL(artifactURL);
77 ret.add(artifactInfoImpl);
80 ret.stream().forEach(ArtifactInfoImpl::updateArtifactTimeout);
85 public static List<ArtifactInfoImpl> convertServiceArtifactToArtifactInfoImpl(Service service, Collection<ArtifactDefinition> list) {
86 List<ArtifactInfoImpl> ret = new ArrayList<>();
87 Map<String, List<ArtifactDefinition>> artifactIdToDef = list.stream().collect(Collectors.groupingBy(ArtifactDefinition::getUniqueId));
89 for (ArtifactDefinition artifactDef : list) {
90 String generatedFromUUID = null;
91 if (artifactDef.getGeneratedFromId() != null && !artifactDef.getGeneratedFromId().isEmpty()) {
92 ArtifactDefinition artifactFrom = artifactIdToDef.get(artifactDef.getGeneratedFromId()).get(0);
93 generatedFromUUID = artifactFrom.getArtifactUUID();
95 ArtifactInfoImpl artifactInfoImpl = new ArtifactInfoImpl(artifactDef, generatedFromUUID, getUpdatedRequiredArtifactsFromNamesToUuids(artifactDef, service.getDeploymentArtifacts()));
96 String artifactURL = ServiceDistributionArtifactsBuilder.buildServiceArtifactUrl(service, artifactDef.getArtifactName());
97 artifactInfoImpl.setArtifactURL(artifactURL);
98 ret.add(artifactInfoImpl);
105 private static List<String> getUpdatedRequiredArtifactsFromNamesToUuids(ArtifactDefinition artifactDefinition, Map<String, ArtifactDefinition> artifacts) {
106 List<String> requiredArtifacts = null;
107 if (artifactDefinition != null && artifactDefinition.getRequiredArtifacts() != null && !artifactDefinition.getRequiredArtifacts().isEmpty() && artifacts != null && !artifacts.isEmpty()) {
108 requiredArtifacts = artifacts.values().stream().filter(art -> artifactDefinition.getRequiredArtifacts().contains(art.getArtifactName())).map(ArtifactDataDefinition::getArtifactUUID).collect(Collectors.toList());
110 return requiredArtifacts;
113 public String getArtifactName() {
117 public void setArtifactName(String artifactName) {
118 this.artifactName = artifactName;
121 public ArtifactTypeEnum getArtifactType() {
125 public void setArtifactType(ArtifactTypeEnum artifactType) {
126 this.artifactType = artifactType;
129 public String getArtifactURL() {
133 public void setArtifactURL(String artifactURL) {
134 this.artifactURL = artifactURL;
137 public String getArtifactChecksum() {
138 return artifactChecksum;
141 public void setArtifactChecksum(String artifactChecksum) {
142 this.artifactChecksum = artifactChecksum;
145 public String getArtifactDescription() {
146 return artifactDescription;
149 public void setArtifactDescription(String artifactDescription) {
150 this.artifactDescription = artifactDescription;
153 public Integer getArtifactTimeout() {
154 return artifactTimeout;
157 public void setArtifactTimeout(Integer artifactTimeout) {
158 this.artifactTimeout = artifactTimeout;
161 public List<String> getRelatedArtifacts() {
162 return relatedArtifacts;
165 public void setRelatedArtifacts(List<String> relatedArtifacts) {
166 this.relatedArtifacts = relatedArtifacts;
170 public String toString() {
171 return "ArtifactInfoImpl [artifactName=" + artifactName + ", artifactType=" + artifactType + ", artifactURL=" + artifactURL + ", artifactChecksum=" + artifactChecksum + ", artifactDescription=" + artifactDescription + ", artifactTimeout="
172 + artifactTimeout + ", artifactUUID=" + artifactUUID + ", artifactVersion=" + artifactVersion + ", generatedFromUUID=" + generatedFromUUID + ", relatedArtifacts=" + relatedArtifacts + "]";
175 public String getArtifactUUID() {
179 public void setArtifactUUID(String artifactUUID) {
180 this.artifactUUID = artifactUUID;
183 public String getArtifactVersion() {
184 return artifactVersion;
187 public void setArtifactVersion(String artifactVersion) {
188 this.artifactVersion = artifactVersion;
191 public String getGeneratedFromUUID() {
192 return generatedFromUUID;
195 public void setGeneratedFromUUID(String generatedFromUUID) {
196 this.generatedFromUUID = generatedFromUUID;
199 public void updateArtifactTimeout(){
200 int currentConfigTimeout = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration().getCurrentArtifactInstallationTimeout();
201 if(artifactTimeout == null || artifactTimeout < currentConfigTimeout)
202 artifactTimeout = currentConfigTimeout;