/*- | |
* ============LICENSE_START======================================================= | |
* OSAM | |
* ================================================================================ | |
* Copyright (C) 2018 AT&T | |
* ================================================================================ | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
* ============LICENSE_END========================================================= | |
*/ | |
package org.onap.osam.mso.model; | |
import com.fasterxml.jackson.annotation.JsonInclude; | |
import com.fasterxml.jackson.annotation.JsonProperty; | |
import com.fasterxml.jackson.annotation.JsonTypeInfo; | |
import com.fasterxml.jackson.annotation.JsonTypeName; | |
import org.onap.osam.domain.mso.CloudConfiguration; | |
import org.onap.osam.domain.mso.ModelInfo; | |
import org.onap.osam.domain.mso.SubscriberInfo; | |
import org.onap.osam.model.serviceInstantiation.VfModule; | |
import java.util.List; | |
import java.util.Map; | |
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY; | |
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; | |
public class ServiceInstantiationRequestDetails { | |
@JsonProperty("modelInfo") | |
private ModelInfo modelInfo; | |
@JsonProperty("owningEntity") | |
private ServiceInstantiationOwningEntity owningEntity; | |
@JsonProperty("subscriberInfo") | |
private SubscriberInfo subscriberInfo; | |
@JsonProperty("project") | |
private Project project; | |
@JsonProperty("requestParameters") | |
private RequestParameters requestParameters; | |
@JsonProperty("requestInfo") | |
private RequestInfo requestInfo; | |
public ServiceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo, | |
@JsonProperty(value = "owningEntity", required = true) ServiceInstantiationOwningEntity owningEntity, | |
@JsonProperty(value = "subscriberInfo", required = true) SubscriberInfo subscriberInfo, | |
@JsonProperty(value = "project", required = true) Project project, | |
@JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo, | |
@JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters) { | |
this.modelInfo = modelInfo; | |
this.owningEntity = owningEntity; | |
this.subscriberInfo = subscriberInfo; | |
this.project = project; | |
this.requestInfo = requestInfo; | |
this.requestParameters = requestParameters; | |
} | |
public static class ServiceInstantiationOwningEntity{ | |
public final String owningEntityId; | |
public final String owningEntityName; | |
public ServiceInstantiationOwningEntity(String owningEntityId, String owningEntityName) { | |
this.owningEntityId = owningEntityId; | |
this.owningEntityName = owningEntityName; | |
} | |
} | |
public static class RequestInfo { | |
@JsonInclude(NON_NULL) public final String instanceName; | |
public final String productFamilyId; | |
public final String source; | |
public final boolean suppressRollback; | |
public final String requestorId; | |
public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) { | |
this.instanceName = instanceName; | |
this.productFamilyId = productFamilyId; | |
this.source = source; | |
this.requestorId = requestorId; | |
// in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback" | |
this.suppressRollback = !rollbackOnFailure; | |
} | |
} | |
public static class Project{ | |
public final String projectName; | |
public Project(String projectName) { | |
this.projectName = projectName; | |
} | |
} | |
public static class RequestParameters { | |
public final String subscriptionServiceType; | |
public final boolean aLaCarte; | |
public final List<ServiceInstantiationService> userParams; | |
public RequestParameters(String subscriptionServiceType, boolean aLaCarte, List<ServiceInstantiationService> userParams) { | |
this.subscriptionServiceType = subscriptionServiceType; | |
this.aLaCarte = aLaCarte; | |
this.userParams = userParams; | |
} | |
} | |
@JsonTypeName("service") | |
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME) | |
public static class ServiceInstantiationService{ | |
public ModelInfo modelInfo = new ModelInfo(); | |
@JsonInclude(NON_NULL) public String instanceName; | |
public List<Map<String,String>> instanceParams; | |
public ServiceInstantiationVnfList resources; | |
public ServiceInstantiationService (ModelInfo modelInfo, String instanceName, List<Map<String,String>> instanceParams, ServiceInstantiationVnfList vnfs){ | |
this.modelInfo.setModelType(modelInfo.getModelType()); | |
this.modelInfo.setModelName(modelInfo.getModelName()); | |
this.modelInfo.setModelVersionId(modelInfo.getModelVersionId()); | |
this.instanceName = instanceName; | |
this.instanceParams = instanceParams; | |
this.resources = vnfs; | |
} | |
} | |
public static class ServiceInstantiationVnfList{ | |
public final List<ServiceInstantiationVnf> vnfs; | |
public ServiceInstantiationVnfList(List<ServiceInstantiationVnf> vnfList) { | |
this.vnfs = vnfList; | |
} | |
} | |
public static class ServiceInstantiationVnf{ | |
public final ModelInfo modelInfo; | |
public final CloudConfiguration cloudConfiguration; | |
public final Platform platform; | |
public final LineOfBusiness lineOfBusiness; | |
public final String productFamilyId; | |
public final List<Map<String, String>> instanceParams; | |
@JsonInclude(NON_EMPTY) public final List<VfModule> vfModules; | |
@JsonInclude(NON_NULL) public final String instanceName; | |
public ServiceInstantiationVnf(ModelInfo modelInfo, CloudConfiguration cloudConfiguration, String platform, String lineOfBusiness, String productFamilyId, List<Map<String, String>> instanceParams, List<VfModule> vfModules, String instanceName) { | |
this.modelInfo = modelInfo; | |
this.cloudConfiguration = cloudConfiguration; | |
this.platform = new Platform(platform); | |
this.lineOfBusiness = new LineOfBusiness(lineOfBusiness); | |
this.productFamilyId = productFamilyId; | |
this.instanceParams = instanceParams; | |
this.vfModules = vfModules; | |
this.instanceName = instanceName; | |
} | |
} | |
public static class Platform{ | |
public final String platformName; | |
public Platform(String platformName) { | |
this.platformName = platformName; | |
} | |
} | |
public static class LineOfBusiness{ | |
public final String lineOfBusinessName; | |
public LineOfBusiness(String lineOfBusiness) { | |
this.lineOfBusinessName = lineOfBusiness; | |
} | |
} | |
} | |