1 package org.onap.vid.mso.model;
3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5 import org.onap.vid.mso.rest.SubscriberInfo;
10 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
11 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
13 public class ServiceInstantiationRequestDetails {
15 @JsonProperty("modelInfo")
16 private ModelInfo modelInfo;
18 @JsonProperty("owningEntity")
19 private ServiceInstantiationOwningEntity owningEntity;
21 @JsonProperty("subscriberInfo")
22 private SubscriberInfo subscriberInfo;
24 @JsonProperty("project")
25 private Project project;
27 @JsonProperty("requestParameters")
28 private RequestParameters requestParameters;
30 @JsonProperty("requestInfo")
31 private RequestInfo requestInfo;
33 public ServiceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
34 @JsonProperty(value = "owningEntity", required = true) ServiceInstantiationOwningEntity owningEntity,
35 @JsonProperty(value = "subscriberInfo", required = true) SubscriberInfo subscriberInfo,
36 @JsonProperty(value = "project", required = true) Project project,
37 @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
38 @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters) {
39 this.modelInfo = modelInfo;
40 this.owningEntity = owningEntity;
41 this.subscriberInfo = subscriberInfo;
42 this.project = project;
43 this.requestInfo = requestInfo;
44 this.requestParameters = requestParameters;
47 public static class ServiceInstantiationOwningEntity{
48 public final String owningEntityId;
49 public final String owningEntityName;
51 public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
52 this.owningEntityId = owningEntityId;
53 this.owningEntityName = owningEntityName;
57 public static class RequestInfo {
59 @JsonInclude(NON_NULL) public final String instanceName;
60 @JsonInclude(NON_NULL) public final String productFamilyId;
61 public final String source;
62 public final boolean suppressRollback;
63 public final String requestorId;
65 public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
66 this.instanceName = instanceName;
67 this.productFamilyId = productFamilyId;
69 this.requestorId = requestorId;
70 // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
71 this.suppressRollback = !rollbackOnFailure;
75 public static class Project{
76 public final String projectName;
78 public Project(String projectName) {
79 this.projectName = projectName;
83 public static class RequestParameters {
84 @JsonInclude(NON_NULL) public final String testApi;
85 public final String subscriptionServiceType;
86 public final boolean aLaCarte;
87 public final List<? extends UserParamTypes> userParams;
89 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams) {
90 this(subscriptionServiceType, aLaCarte, userParams, null);
93 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams, String testApi) {
94 this.subscriptionServiceType = subscriptionServiceType;
95 this.aLaCarte = aLaCarte;
96 this.userParams = userParams;
97 this.testApi = testApi;
101 public static class UserParamNameAndValue implements UserParamTypes {
102 private final String name;
103 private final String value;
105 public UserParamNameAndValue(String name, String value) {
110 public String getName() {
114 public String getValue() {
119 public static class ServiceInstantiationService implements UserParamTypes {
120 private final ServiceInstantiationServiceInner serviceInstantiationServiceInner;
122 public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
123 serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs);
126 @JsonProperty("service")
127 public ServiceInstantiationServiceInner getServiceInstantiationServiceInner() {
128 return serviceInstantiationServiceInner;
131 private static class ServiceInstantiationServiceInner implements UserParamTypes {
132 public ModelInfo modelInfo = new ModelInfo();
133 @JsonInclude(NON_NULL)
134 public String instanceName;
135 public List<Map<String, String>> instanceParams;
136 public ServiceInstantiationVnfList resources;
138 public ServiceInstantiationServiceInner(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
139 this.modelInfo.setModelType(modelInfo.getModelType());
140 this.modelInfo.setModelName(modelInfo.getModelName());
141 this.modelInfo.setModelVersionId(modelInfo.getModelVersionId());
142 this.instanceName = instanceName;
143 this.instanceParams = instanceParams;
144 this.resources = vnfs;
149 public static class ServiceInstantiationVnfList{
150 public final List<ServiceInstantiationVnf> vnfs;
152 public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
157 public static class ServiceInstantiationVnf{
158 public final ModelInfo modelInfo;
159 public final CloudConfiguration cloudConfiguration;
160 public final Platform platform;
161 public final LineOfBusiness lineOfBusiness;
162 public final String productFamilyId;
163 public final List<Map<String, String>> instanceParams;
164 @JsonInclude(NON_EMPTY) public final List<VfModuleMacro> vfModules;
165 @JsonInclude(NON_NULL) public final String instanceName;
167 public ServiceInstantiationVnf(ModelInfo modelInfo, CloudConfiguration cloudConfiguration, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> instanceParams, List<VfModuleMacro> vfModules, String instanceName) {
168 this.modelInfo = modelInfo;
169 this.cloudConfiguration = cloudConfiguration;
170 this.platform = new Platform(platform);
171 this.lineOfBusiness = new LineOfBusiness(lineOfBusiness);
172 this.productFamilyId = productFamilyId;
173 this.instanceParams = instanceParams;
174 this.vfModules = vfModules;
175 this.instanceName = instanceName;
179 public static class Platform{
180 public final String platformName;
182 public Platform(String platformName) {
183 this.platformName = platformName;
187 public static class LineOfBusiness{
188 public final String lineOfBusinessName;
190 public LineOfBusiness(String lineOfBusiness) {
191 this.lineOfBusinessName = lineOfBusiness;