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;
10 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
12 @JsonInclude(NON_NULL)
13 public class BaseResourceInstantiationRequestDetails {
15 @JsonProperty("modelInfo")
16 protected ModelInfo modelInfo;
18 @JsonProperty("cloudConfiguration")
19 protected CloudConfiguration cloudConfiguration;
21 @JsonProperty("requestInfo")
22 protected RequestInfo requestInfo;
24 @JsonProperty("platform")
25 protected Platform platform;
27 @JsonProperty("lineOfBusiness")
28 protected LineOfBusiness lineOfBusiness;
30 @JsonProperty("relatedInstanceList")
31 protected List<RelatedInstance> relatedInstanceList;
33 @JsonProperty("requestParameters")
34 protected RequestParameters requestParameters;
36 public BaseResourceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
37 @JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
38 @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
39 @JsonProperty(value = "platform", required = true) Platform platform,
40 @JsonProperty(value = "lineOfBusiness", required = true) LineOfBusiness lineOfBusiness,
41 @JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
42 @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters)
44 this.modelInfo = modelInfo;
45 this.cloudConfiguration = cloudConfiguration;
46 this.requestInfo = requestInfo;
47 this.platform = platform;
48 this.lineOfBusiness = lineOfBusiness;
49 this.relatedInstanceList = relatedInstanceList;
50 this.requestParameters = requestParameters;
53 public BaseResourceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
54 @JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
55 @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
56 @JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
57 @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters)
59 this.modelInfo = modelInfo;
60 this.cloudConfiguration = cloudConfiguration;
61 this.requestInfo = requestInfo;
62 this.relatedInstanceList = relatedInstanceList;
63 this.requestParameters = requestParameters;
66 public static class RequestInfo {
68 @JsonInclude(NON_NULL) public final String instanceName;
69 @JsonInclude(NON_NULL) public final String productFamilyId;
70 public final String source;
71 public final boolean suppressRollback;
72 public final String requestorId;
74 public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
75 this.instanceName = instanceName;
76 this.productFamilyId = productFamilyId;
78 this.requestorId = requestorId;
79 // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
80 this.suppressRollback = !rollbackOnFailure;
84 public static class Project{
85 public final String projectName;
87 public Project(String projectName) {
88 this.projectName = projectName;
92 public static class Platform{
93 public final String platformName;
95 public Platform(String platformName) {
96 this.platformName = platformName;
100 public static class LineOfBusiness{
101 public final String lineOfBusinessName;
103 public LineOfBusiness(String lineOfBusiness) {
104 this.lineOfBusinessName = lineOfBusiness;
108 @JsonTypeName("relatedInstance")
109 @JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
110 public static class RelatedInstance{
111 public ModelInfo modelInfo;
112 @JsonInclude(NON_NULL) public String instanceId; //TODO ask Eylon - is this needed, and if yes, for other fields as well?
113 @JsonInclude(NON_NULL) public String instanceName;
115 public RelatedInstance (@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
116 @JsonProperty (value = "instanceId", required = true) String instanceId){
117 this.modelInfo = modelInfo;
118 this.instanceId = instanceId;
121 public RelatedInstance (@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
122 @JsonProperty (value = "instanceId", required = true) String instanceId,
123 @JsonProperty (value = "instanceName", required = true) String instanceName){
124 this.modelInfo = modelInfo;
125 this.instanceId = instanceId;
126 this.instanceName = instanceName;
130 public static class RequestParameters {
131 public final List<? extends UserParamTypes> userParams;
133 public RequestParameters(List<? extends UserParamTypes> userParams) {
134 this.userParams = userParams;
137 public List<? extends UserParamTypes> getUserParams() {