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.mso.model;
23 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
24 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
26 import com.fasterxml.jackson.annotation.JsonCreator;
27 import com.fasterxml.jackson.annotation.JsonInclude;
28 import com.fasterxml.jackson.annotation.JsonProperty;
29 import java.util.List;
31 import java.util.Objects;
32 import org.onap.vid.mso.rest.SubscriberInfo;
34 public class ServiceInstantiationRequestDetails {
36 @JsonProperty("modelInfo")
37 private ModelInfo modelInfo;
39 @JsonProperty("owningEntity")
40 private ServiceInstantiationOwningEntity owningEntity;
42 @JsonProperty("subscriberInfo")
43 private SubscriberInfo subscriberInfo;
45 @JsonProperty("project")
46 private Project project;
48 @JsonProperty("requestParameters")
49 private RequestParameters requestParameters;
51 @JsonProperty("requestInfo")
52 private RequestInfo requestInfo;
54 public ServiceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
55 @JsonProperty(value = "owningEntity", required = true) ServiceInstantiationOwningEntity owningEntity,
56 @JsonProperty(value = "subscriberInfo", required = true) SubscriberInfo subscriberInfo,
57 @JsonProperty(value = "project", required = true) Project project,
58 @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
59 @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters) {
60 this.modelInfo = modelInfo;
61 this.owningEntity = owningEntity;
62 this.subscriberInfo = subscriberInfo;
63 this.project = project;
64 this.requestInfo = requestInfo;
65 this.requestParameters = requestParameters;
68 public static class ServiceInstantiationOwningEntity{
69 public final String owningEntityId;
70 public final String owningEntityName;
72 public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
73 this.owningEntityId = owningEntityId;
74 this.owningEntityName = owningEntityName;
78 public static class RequestInfo {
80 @JsonInclude(NON_EMPTY) public final String instanceName;
81 @JsonInclude(NON_EMPTY) public final String productFamilyId;
82 public final String source;
83 public final boolean suppressRollback;
84 public final String requestorId;
86 public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
87 this.instanceName = instanceName;
88 this.productFamilyId = productFamilyId;
90 this.requestorId = requestorId;
91 // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
92 this.suppressRollback = !rollbackOnFailure;
96 public static class Project{
97 public final String projectName;
99 public Project(String projectName) {
100 this.projectName = projectName;
104 public static class RequestParameters {
105 @JsonInclude(NON_NULL) public final String testApi;
106 public final String subscriptionServiceType;
107 public final boolean aLaCarte;
108 public final List<? extends UserParamTypes> userParams;
110 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams) {
111 this(subscriptionServiceType, aLaCarte, userParams, null);
114 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams, String testApi) {
115 this.subscriptionServiceType = subscriptionServiceType;
116 this.aLaCarte = aLaCarte;
117 this.userParams = userParams;
118 this.testApi = testApi;
122 public static class UserParamNameAndValue implements UserParamTypes {
123 private final String name;
124 private final String value;
127 public UserParamNameAndValue(
128 @JsonProperty("name") String name,
129 @JsonProperty("value") String value
135 public String getName() {
139 public String getValue() {
144 public boolean equals(Object o) {
148 if (!(o instanceof UserParamNameAndValue)) {
151 UserParamNameAndValue that = (UserParamNameAndValue) o;
152 return Objects.equals(getName(), that.getName()) &&
153 Objects.equals(getValue(), that.getValue());
157 public int hashCode() {
158 return Objects.hash(getName(), getValue());
162 public static class HomingSolution implements UserParamTypes {
163 private final String homingSolution;
165 public HomingSolution(String homingSolution) {
166 this.homingSolution = homingSolution;
169 @JsonProperty("Homing_Solution")
170 public String getHomingSolution() {
171 return homingSolution;
175 public static class ServiceInstantiationService implements UserParamTypes {
176 private final ServiceInstantiationServiceInner serviceInstantiationServiceInner;
178 public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, List<ServiceInstantiationVnf> vnfs, List<ServiceInstantiationPnf> pnfs) {
179 serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs, pnfs);
182 @JsonProperty("service")
183 public ServiceInstantiationServiceInner getServiceInstantiationServiceInner() {
184 return serviceInstantiationServiceInner;
187 private static class ServiceInstantiationServiceInner implements UserParamTypes {
188 public ModelInfo modelInfo = new ModelInfo();
189 @JsonInclude(NON_EMPTY)
190 public String instanceName;
191 public List<Map<String, String>> instanceParams;
192 public Resources resources;
194 public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, List<ServiceInstantiationVnf> vnfs, List<ServiceInstantiationPnf> pnfs) {
195 this.modelInfo.setModelType(modelInfo.getModelType());
196 this.modelInfo.setModelName(modelInfo.getModelName());
197 this.modelInfo.setModelVersionId(modelInfo.getModelVersionId());
198 this.instanceName = instanceName;
199 this.instanceParams = instanceParams;
200 this.resources = new Resources(vnfs, pnfs);
205 public static class ServiceInstantiationVnfList{
206 public final List<ServiceInstantiationVnf> vnfs;
208 public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
213 public static class ServiceInstantiationPnfList{
215 public final List<ServiceInstantiationPnf> pnfs;
217 public ServiceInstantiationPnfList(List<ServiceInstantiationPnf> pnfList) {
222 public static class ServiceInstantiationVnf{
223 public final ModelInfo modelInfo;
224 public final CloudConfiguration cloudConfiguration;
225 public final Platform platform;
226 public final LineOfBusiness lineOfBusiness;
227 public final String productFamilyId;
228 public final List<Map<String, String>> instanceParams;
229 @JsonInclude(NON_EMPTY) public final List<VfModuleMacro> vfModules;
230 @JsonInclude(NON_EMPTY) public final String instanceName;
232 public ServiceInstantiationVnf(ModelInfo modelInfo, CloudConfiguration cloudConfiguration, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> instanceParams, List<VfModuleMacro> vfModules, String instanceName) {
233 this.modelInfo = modelInfo;
234 this.cloudConfiguration = cloudConfiguration;
235 this.platform = new Platform(platform);
236 this.lineOfBusiness = new LineOfBusiness(lineOfBusiness);
237 this.productFamilyId = productFamilyId;
238 this.instanceParams = instanceParams;
239 this.vfModules = vfModules;
240 this.instanceName = instanceName;
244 public static class ServiceInstantiationPnf{
246 public final ModelInfo modelInfo;
247 public final Platform platform;
248 public final LineOfBusiness lineOfBusiness;
249 public final String productFamilyId;
250 public final List<Map<String, String>> instanceParams;
251 @JsonInclude(NON_EMPTY) public final String instanceName;
253 public ServiceInstantiationPnf(ModelInfo modelInfo, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> instanceParams, String instanceName) {
254 this.modelInfo = modelInfo;
255 this.platform = new Platform(platform);
256 this.lineOfBusiness = new LineOfBusiness(lineOfBusiness);
257 this.productFamilyId = productFamilyId;
258 this.instanceParams = instanceParams;
259 this.instanceName = instanceName;
263 public static class Platform{
264 public final String platformName;
266 public Platform(String platformName) {
267 this.platformName = platformName;
271 public static class LineOfBusiness{
272 public final String lineOfBusinessName;
274 public LineOfBusiness(String lineOfBusiness) {
275 this.lineOfBusinessName = lineOfBusiness;