2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 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.vid.model.serviceInstantiation;
23 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
25 import com.fasterxml.jackson.annotation.JsonIgnore;
26 import com.fasterxml.jackson.annotation.JsonInclude;
27 import com.fasterxml.jackson.annotation.JsonProperty;
28 import com.google.common.collect.ImmutableMap;
29 import java.util.Collection;
30 import java.util.Collections;
31 import java.util.List;
33 import javax.annotation.Nullable;
34 import org.apache.commons.lang3.StringUtils;
35 import org.onap.vid.job.JobAdapter;
36 import org.onap.vid.job.JobType;
37 import org.onap.vid.model.Action;
38 import org.onap.vid.mso.model.ModelInfo;
40 public abstract class BaseResource implements JobAdapter.AsyncJobRequest {
42 public enum PauseInstantiation {
46 protected String instanceId;
48 protected ModelInfo modelInfo;
50 protected String instanceName;
52 protected Action action;
54 protected String lcpCloudRegionId;
56 protected String tenantId;
58 protected List<Map<String, String>> instanceParams;
60 protected boolean rollbackOnFailure;
62 protected String trackById;
64 protected Boolean isFailed;
66 protected String statusMessage;
68 protected Integer position;
70 @JsonInclude(NON_NULL)
71 protected String originalName; //not used at backend, but stored for fronted
73 @JsonInclude(NON_NULL)
74 protected final PauseInstantiation pauseInstantiation;
76 private static final Map<String, Action> actionStingToEnumMap = ImmutableMap.<String, Action>builder()
77 .put("Delete", Action.Delete)
78 .put("Create", Action.Create)
79 .put("None", Action.None)
80 .put("Update_Delete", Action.Delete)
81 .put("None_Delete", Action.Delete)
82 .put("Resume", Action.Resume)
83 .put("Upgrade", Action.Upgrade)
84 .put("None_Upgrade", Action.Upgrade)
88 protected BaseResource(@JsonProperty("modelInfo") ModelInfo modelInfo,
89 @JsonProperty("instanceName") String instanceName,
90 @JsonProperty("action") String action,
91 @JsonProperty("lcpCloudRegionId") String lcpCloudRegionId,
92 @JsonProperty("legacyRegion") String legacyRegion,
93 @JsonProperty("tenantId") String tenantId,
94 @JsonProperty("instanceParams") List<Map<String, String>> instanceParams,
95 @JsonProperty("rollbackOnFailure") boolean rollbackOnFailure,
96 @JsonProperty("instanceId") String instanceId,
97 @JsonProperty("trackById") String trackById,
98 @JsonProperty("isFailed") Boolean isFailed,
99 @JsonProperty("statusMessage") String statusMessage,
100 @JsonProperty("position") Integer position,
101 @JsonProperty("pauseInstantiation") PauseInstantiation pauseInstantiation,
102 @JsonProperty("originalName") String originalName) {
103 this.modelInfo = modelInfo;
104 this.modelInfo.setModelType(getModelType());
105 this.rollbackOnFailure = rollbackOnFailure;
106 this.instanceName = StringUtils.defaultString(instanceName, "");
107 this.action = actionStringToEnum(action);
108 this.lcpCloudRegionId = StringUtils.isNotEmpty(legacyRegion) ? legacyRegion : lcpCloudRegionId;
109 this.tenantId = tenantId;
110 this.instanceParams = instanceParams;
111 this.instanceId = instanceId;
112 this.trackById = trackById;
113 this.isFailed = isFailed!= null ? isFailed: false;
114 this.statusMessage = statusMessage;
115 this.position = position;
116 this.pauseInstantiation = pauseInstantiation;
117 this.originalName = originalName;
120 private Action actionStringToEnum(String actionAsString) {
121 return actionStingToEnumMap.get(actionAsString);
124 public ModelInfo getModelInfo() {
128 public String getInstanceName() {
132 public Action getAction() {
133 return (action == null ? Action.Create : action);
136 public String getLcpCloudRegionId() {
137 return lcpCloudRegionId;
140 public String getTenantId() {
144 public List<Map<String, String>> getInstanceParams() {
145 return instanceParams == null ? Collections.emptyList() : instanceParams;
148 public boolean isRollbackOnFailure() { return rollbackOnFailure; }
150 public String getInstanceId() {
154 protected abstract String getModelType();
156 public String getTrackById() {
160 public void setTrackById(String trackById) {
161 this.trackById = trackById;
164 public Boolean getIsFailed() {
168 public void setIsFailed(Boolean isFailed) {
169 this.isFailed = isFailed;
172 public void setInstanceId(String instanceId) {
173 this.instanceId = instanceId;
176 public void setAction(Action action) {
177 this.action = action;
180 public String getStatusMessage() {
181 return statusMessage;
184 public void setStatusMessage(String statusMessage) {
185 this.statusMessage = statusMessage;
188 public Integer getPosition() {
192 public void setPosition(Integer position) {
193 this.position = position;
196 public String getOriginalName() {
201 public abstract Collection<? extends BaseResource> getChildren();
204 public abstract JobType getJobType();
207 public PauseInstantiation getPauseInstantiation() {
208 return pauseInstantiation;