1 package org.onap.vid.mso.model;
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;
12 import java.util.List;
15 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY;
16 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
18 public class ServiceInstantiationRequestDetails {
20 @JsonProperty("modelInfo")
21 private ModelInfo modelInfo;
23 @JsonProperty("owningEntity")
24 private ServiceInstantiationOwningEntity owningEntity;
26 @JsonProperty("subscriberInfo")
27 private SubscriberInfo subscriberInfo;
29 @JsonProperty("project")
30 private Project project;
32 @JsonProperty("requestParameters")
33 private RequestParameters requestParameters;
35 @JsonProperty("requestInfo")
36 private RequestInfo requestInfo;
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;
52 public static class ServiceInstantiationOwningEntity{
53 public final String owningEntityId;
54 public final String owningEntityName;
56 public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) {
57 this.owningEntityId = owningEntityId;
58 this.owningEntityName = owningEntityName;
62 public static class RequestInfo {
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;
70 public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
71 this.instanceName = instanceName;
72 this.productFamilyId = productFamilyId;
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;
80 public static class Project{
81 public final String projectName;
83 public Project(String projectName) {
84 this.projectName = projectName;
88 public static class RequestParameters {
90 public final String subscriptionServiceType;
91 public final boolean aLaCarte;
92 public final List<ServiceInstantiationService> userParams;
94 public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<ServiceInstantiationService> userParams) {
95 this.subscriptionServiceType = subscriptionServiceType;
96 this.aLaCarte = aLaCarte;
97 this.userParams = userParams;
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;
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;
119 public static class ServiceInstantiationVnfList{
120 public final List<ServiceInstantiationVnf> vnfs;
122 public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) {
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;
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;
149 public static class Platform{
150 public final String platformName;
152 public Platform(String platformName) {
153 this.platformName = platformName;
157 public static class LineOfBusiness{
158 public final String lineOfBusinessName;
160 public LineOfBusiness(String lineOfBusiness) {
161 this.lineOfBusinessName = lineOfBusiness;