1a54b74cb2820058f4b7c62f41da63c1398ead74
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / model / ServiceInstantiationRequestDetails.java
1 package org.onap.vid.mso.model;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5 import com.fasterxml.jackson.annotation.JsonTypeInfo;
6 import com.fasterxml.jackson.annotation.JsonTypeName;
7 import org.onap.vid.domain.mso.CloudConfiguration;
8 import org.onap.vid.domain.mso.ModelInfo;
9 import org.onap.vid.domain.mso.SubscriberInfo;
10 import org.onap.vid.model.serviceInstantiation.VfModule;
11
12 import java.util.List;
13 import java.util.Map;
14
15 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
16 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
17
18 public class ServiceInstantiationRequestDetails {
19
20     @JsonProperty("modelInfo")
21     private ModelInfo modelInfo;
22
23     @JsonProperty("owningEntity")
24     private ServiceInstantiationOwningEntity owningEntity;
25
26     @JsonProperty("subscriberInfo")
27     private SubscriberInfo subscriberInfo;
28
29     @JsonProperty("project")
30     private Project project;
31
32     @JsonProperty("requestParameters")
33     private RequestParameters requestParameters;
34
35     @JsonProperty("requestInfo")
36     private RequestInfo requestInfo;
37
38     public ServiceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
39                                               @JsonProperty(value = "owningEntity", required = true) ServiceInstantiationOwningEntity owningEntity,
40                                               @JsonProperty(value = "subscriberInfo", required = true) SubscriberInfo subscriberInfo,
41                                               @JsonProperty(value = "project", required = true) Project project,
42                                               @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
43                                               @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters) {
44         this.modelInfo = modelInfo;
45         this.owningEntity = owningEntity;
46         this.subscriberInfo = subscriberInfo;
47         this.project = project;
48         this.requestInfo = requestInfo;
49         this.requestParameters = requestParameters;
50     }
51
52     public static class  ServiceInstantiationOwningEntity{
53         public final String owningEntityId;
54         public final String owningEntityName;
55
56         public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
57             this.owningEntityId = owningEntityId;
58             this.owningEntityName = owningEntityName;
59         }
60     }
61
62     public static class RequestInfo {
63
64         @JsonInclude(NON_NULL) public final String instanceName;
65         public final String productFamilyId;
66         public final String source;
67         public final boolean suppressRollback;
68         public final String requestorId;
69
70         public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
71             this.instanceName = instanceName;
72             this.productFamilyId = productFamilyId;
73             this.source = source;
74             this.requestorId = requestorId;
75             // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
76             this.suppressRollback = !rollbackOnFailure;
77         }
78     }
79
80     public static class Project{
81         public final String projectName;
82
83         public Project(String projectName) {
84             this.projectName = projectName;
85         }
86     }
87
88     public static class RequestParameters {
89
90         public final String subscriptionServiceType;
91         public final boolean aLaCarte;
92         public final List<ServiceInstantiationService> userParams;
93
94         public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<ServiceInstantiationService> userParams) {
95             this.subscriptionServiceType = subscriptionServiceType;
96             this.aLaCarte = aLaCarte;
97             this.userParams = userParams;
98         }
99     }
100
101     @JsonTypeName("service")
102     @JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
103     public static class ServiceInstantiationService{
104         public ModelInfo modelInfo = new ModelInfo();
105         @JsonInclude(NON_NULL) public String instanceName;
106         public List<Map<String,String>> instanceParams;
107         public ServiceInstantiationVnfList resources;
108
109         public ServiceInstantiationService (ModelInfo modelInfo, String instanceName, List<Map<String,String>> instanceParams, ServiceInstantiationVnfList vnfs){
110             this.modelInfo.setModelType(modelInfo.getModelType());
111             this.modelInfo.setModelName(modelInfo.getModelName());
112             this.modelInfo.setModelVersionId(modelInfo.getModelVersionId());
113             this.instanceName = instanceName;
114             this.instanceParams = instanceParams;
115             this.resources = vnfs;
116         }
117     }
118
119     public static class ServiceInstantiationVnfList{
120         public final List<ServiceInstantiationVnf> vnfs;
121
122         public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
123             this.vnfs = vnfList;
124         }
125     }
126
127     public static class ServiceInstantiationVnf{
128         public final ModelInfo modelInfo;
129         public final CloudConfiguration cloudConfiguration;
130         public final Platform platform;
131         public final LineOfBusiness lineOfBusiness;
132         public final String productFamilyId;
133         public final List<Map<String, String>>  instanceParams;
134         @JsonInclude(NON_EMPTY) public final List<VfModule> vfModules;
135         @JsonInclude(NON_NULL) public final String instanceName;
136
137         public ServiceInstantiationVnf(ModelInfo modelInfo, CloudConfiguration cloudConfiguration, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>>  instanceParams, List<VfModule> vfModules, String instanceName) {
138             this.modelInfo = modelInfo;
139             this.cloudConfiguration = cloudConfiguration;
140             this.platform = new Platform(platform);
141             this.lineOfBusiness = new LineOfBusiness(lineOfBusiness);
142             this.productFamilyId = productFamilyId;
143             this.instanceParams = instanceParams;
144             this.vfModules = vfModules;
145             this.instanceName = instanceName;
146         }
147     }
148
149     public static class Platform{
150         public final String platformName;
151
152         public Platform(String platformName) {
153             this.platformName = platformName;
154         }
155     }
156
157     public static class LineOfBusiness{
158         public final String lineOfBusinessName;
159
160         public LineOfBusiness(String lineOfBusiness) {
161             this.lineOfBusinessName = lineOfBusiness;
162         }
163     }
164 }
165