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 com.fasterxml.jackson.annotation.JsonInclude;
24 import com.fasterxml.jackson.annotation.JsonProperty;
25 import org.onap.vid.mso.rest.SubscriberInfo;
27 import java.util.List;
30 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
31 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
33 public class ServiceInstantiationRequestDetails {
35 @JsonProperty("modelInfo")
36 private ModelInfo modelInfo;
38 @JsonProperty("owningEntity")
39 private ServiceInstantiationOwningEntity owningEntity;
41 @JsonProperty("subscriberInfo")
42 private SubscriberInfo subscriberInfo;
44 @JsonProperty("project")
45 private Project project;
47 @JsonProperty("requestParameters")
48 private RequestParameters requestParameters;
50 @JsonProperty("requestInfo")
51 private RequestInfo requestInfo;
53 public ServiceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
54 @JsonProperty(value = "owningEntity", required = true) ServiceInstantiationOwningEntity owningEntity,
55 @JsonProperty(value = "subscriberInfo", required = true) SubscriberInfo subscriberInfo,
56 @JsonProperty(value = "project", required = true) Project project,
57 @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
58 @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters) {
59 this.modelInfo = modelInfo;
60 this.owningEntity = owningEntity;
61 this.subscriberInfo = subscriberInfo;
62 this.project = project;
63 this.requestInfo = requestInfo;
64 this.requestParameters = requestParameters;
67 public static class ServiceInstantiationOwningEntity{
68 public final String owningEntityId;
69 public final String owningEntityName;
71 public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
72 this.owningEntityId = owningEntityId;
73 this.owningEntityName = owningEntityName;
77 public static class RequestInfo {
79 @JsonInclude(NON_EMPTY) public final String instanceName;
80 @JsonInclude(NON_EMPTY) public final String productFamilyId;
81 public final String source;
82 public final boolean suppressRollback;
83 public final String requestorId;
85 public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
86 this.instanceName = instanceName;
87 this.productFamilyId = productFamilyId;
89 this.requestorId = requestorId;
90 // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
91 this.suppressRollback = !rollbackOnFailure;
95 public static class Project{
96 public final String projectName;
98 public Project(String projectName) {
99 this.projectName = projectName;
103 public static class RequestParameters {
104 @JsonInclude(NON_NULL) public final String testApi;
105 public final String subscriptionServiceType;
106 public final boolean aLaCarte;
107 public final List<? extends UserParamTypes> userParams;
109 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams) {
110 this(subscriptionServiceType, aLaCarte, userParams, null);
113 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams, String testApi) {
114 this.subscriptionServiceType = subscriptionServiceType;
115 this.aLaCarte = aLaCarte;
116 this.userParams = userParams;
117 this.testApi = testApi;
121 public static class UserParamNameAndValue implements UserParamTypes {
122 private final String name;
123 private final String value;
125 public UserParamNameAndValue(String name, String value) {
130 public String getName() {
134 public String getValue() {
139 public static class ServiceInstantiationService implements UserParamTypes {
140 private final ServiceInstantiationServiceInner serviceInstantiationServiceInner;
142 public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
143 serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs);
146 @JsonProperty("service")
147 public ServiceInstantiationServiceInner getServiceInstantiationServiceInner() {
148 return serviceInstantiationServiceInner;
151 private static class ServiceInstantiationServiceInner implements UserParamTypes {
152 public ModelInfo modelInfo = new ModelInfo();
153 @JsonInclude(NON_EMPTY)
154 public String instanceName;
155 public List<Map<String, String>> instanceParams;
156 public ServiceInstantiationVnfList resources;
158 public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
159 this.modelInfo.setModelType(modelInfo.getModelType());
160 this.modelInfo.setModelName(modelInfo.getModelName());
161 this.modelInfo.setModelVersionId(modelInfo.getModelVersionId());
162 this.instanceName = instanceName;
163 this.instanceParams = instanceParams;
164 this.resources = vnfs;
169 public static class ServiceInstantiationVnfList{
170 public final List<ServiceInstantiationVnf> vnfs;
172 public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
177 public static class ServiceInstantiationVnf{
178 public final ModelInfo modelInfo;
179 public final CloudConfiguration cloudConfiguration;
180 public final Platform platform;
181 public final LineOfBusiness lineOfBusiness;
182 public final String productFamilyId;
183 public final List<Map<String, String>> instanceParams;
184 @JsonInclude(NON_EMPTY) public final List<VfModuleMacro> vfModules;
185 @JsonInclude(NON_EMPTY) public final String instanceName;
187 public ServiceInstantiationVnf(ModelInfo modelInfo, CloudConfiguration cloudConfiguration, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> instanceParams, List<VfModuleMacro> vfModules, String instanceName) {
188 this.modelInfo = modelInfo;
189 this.cloudConfiguration = cloudConfiguration;
190 this.platform = new Platform(platform);
191 this.lineOfBusiness = new LineOfBusiness(lineOfBusiness);
192 this.productFamilyId = productFamilyId;
193 this.instanceParams = instanceParams;
194 this.vfModules = vfModules;
195 this.instanceName = instanceName;
199 public static class Platform{
200 public final String platformName;
202 public Platform(String platformName) {
203 this.platformName = platformName;
207 public static class LineOfBusiness{
208 public final String lineOfBusinessName;
210 public LineOfBusiness(String lineOfBusiness) {
211 this.lineOfBusinessName = lineOfBusiness;