Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / model / ServiceInstantiationRequestDetails.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.vid.mso.model;
22
23 import com.fasterxml.jackson.annotation.JsonInclude;
24 import com.fasterxml.jackson.annotation.JsonProperty;
25 import org.onap.vid.mso.rest.SubscriberInfo;
26
27 import java.util.List;
28 import java.util.Map;
29
30 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
31 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
32
33 public class ServiceInstantiationRequestDetails {
34
35     @JsonProperty("modelInfo")
36     private ModelInfo modelInfo;
37
38     @JsonProperty("owningEntity")
39     private ServiceInstantiationOwningEntity owningEntity;
40
41     @JsonProperty("subscriberInfo")
42     private SubscriberInfo subscriberInfo;
43
44     @JsonProperty("project")
45     private Project project;
46
47     @JsonProperty("requestParameters")
48     private RequestParameters requestParameters;
49
50     @JsonProperty("requestInfo")
51     private RequestInfo requestInfo;
52
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;
65     }
66
67     public static class  ServiceInstantiationOwningEntity{
68         public final String owningEntityId;
69         public final String owningEntityName;
70
71         public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
72             this.owningEntityId = owningEntityId;
73             this.owningEntityName = owningEntityName;
74         }
75     }
76
77     public static class RequestInfo {
78
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;
84
85         public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
86             this.instanceName = instanceName;
87             this.productFamilyId = productFamilyId;
88             this.source = source;
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;
92         }
93     }
94
95     public static class Project{
96         public final String projectName;
97
98         public Project(String projectName) {
99             this.projectName = projectName;
100         }
101     }
102
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;
108
109         public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<? extends UserParamTypes> userParams) {
110             this(subscriptionServiceType, aLaCarte, userParams, null);
111         }
112
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;
118         }
119     }
120
121     public static class UserParamNameAndValue implements UserParamTypes {
122         private final String name;
123         private final String value;
124
125         public UserParamNameAndValue(String name, String value) {
126             this.name = name;
127             this.value = value;
128         }
129
130         public String getName() {
131             return name;
132         }
133
134         public String getValue() {
135             return value;
136         }
137     }
138
139     public static class ServiceInstantiationService implements UserParamTypes {
140         private final ServiceInstantiationServiceInner serviceInstantiationServiceInner;
141
142         public ServiceInstantiationService(ModelInfo modelInfo, String instanceName, List<Map<String, String>> instanceParams, ServiceInstantiationVnfList vnfs) {
143             serviceInstantiationServiceInner = new ServiceInstantiationServiceInner(modelInfo, instanceName, instanceParams, vnfs);
144         }
145
146         @JsonProperty("service")
147         public ServiceInstantiationServiceInner getServiceInstantiationServiceInner() {
148             return serviceInstantiationServiceInner;
149         }
150
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;
157
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;
165             }
166         }
167     }
168
169     public static class ServiceInstantiationVnfList{
170         public final List<ServiceInstantiationVnf> vnfs;
171
172         public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
173             this.vnfs = vnfList;
174         }
175     }
176
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;
186
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;
196         }
197     }
198
199     public static class Platform{
200         public final String platformName;
201
202         public Platform(String platformName) {
203             this.platformName = platformName;
204         }
205     }
206
207     public static class LineOfBusiness{
208         public final String lineOfBusinessName;
209
210         public LineOfBusiness(String lineOfBusiness) {
211             this.lineOfBusinessName = lineOfBusiness;
212         }
213     }
214 }
215